2

Apacheの前にあるNginx(リバースプロキシとして設定)に問題があります。私はApacheを使用してPHPファイルを提供し、.htaccessルールを適用しています。

Nginxは機能しますが、.htaccessの一部の書き換えは機能しません。

私はtimthumb.phpを使用して次のようなメディアを管理します。

/cache/150/100/file.jpg > /media/thumb.php?src=images/file.jpg&w=150&h=100

書き換えルールはPHPアプリケーションでのみ機能しますが、上記の静的ファイルでは機能しません。独自の静的ルールを実行しようとすると、Nginxは404を返します。

RewriteEngine On

RewriteRule ^cache/([0-9]+)/([0-9]+)/([a-z0-9_\-\.\/]+)$ /media/thumb.php?src=images/$3&w=$1&h=$2 [L]
RewriteRule ^upload/([0-9]+)/([0-9]+)/([a-z0-9_\-\.\/]+)$ /media/thumb.php?src=upload/$3&w=$1&h=$2 [L]

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php/$0 [PT]
4

1 に答える 1

1

「/upload」ディレクトリと「/cache」ディレクトリは、apacheに渡さずに、nginxを介して直接提供していると思います。

次のルールを試してください。

 location ^~ /upload {
        .......
 }

 location ^~ /cache {
        .......
 }

nginxconfigで静的ファイルをサーバーする場所の前。それが機能するかどうかを教えてください-そうでない場合は-nginx構成の一部も貼り付けます。

詳細:http ://wiki.nginx.org/HttpCoreModule#location

プロキシ中に場所をどのように構成したかによって異なります。優先順位は異なります。

于 2012-11-28T13:59:23.953 に答える