2012-04-12 31 views
2

ApacheサーバーからNginxサーバーに移動する必要のあるWebサイトがあります。Nginx書き換えルール/ try_filesが連携していません

RewriteEngine on 
RewriteRule ^([^/\.]+)/?$ $1.php [L] 

これは、元のリンクを維持するためにwww.example.com/hello.php www.example.com/helloをリダイレクトしますが、.PHPをomitingを次のようにこのウェブサイトの.htaccessファイルがありますurlの終わりから。

私は書き換えルールが.phpのファイルへのすべてのリンクをリダイレクトする、動作しますが、場合は、ディレクトリ内で検索するためのnginxののtry_filesルールを破っ

location/{ 
# Check if a file exists, or route it to index.php. 
     try_files $uri $uri/ /index.php; 
} 

rewrite ^/([a-z]+)$ /$1.php last; 

..私のnginxのサーバーのブロックでこれを再現してみましたファイルが存在しません。

以下の管理者用リンクの例は、その中にindex.phpファイルがあるフォルダです。

www.example.com/admin

admin.phpと呼ばれるファイルがないのでtry_filesは...

www.example.com/admin/

にこれをリダイレクトする必要があります。代わりに、 '入力ファイルが指定されていません'というメッセージが表示されます。

書き換えを削除すると、try_filesが正しく機能します。ただし、この書き換えルールなしではサイトの残りの部分は機能しません。

try_filesと書き直しを一緒にする方法を知っている人はいますか?

おかげ

ベン

答えて

0

私は、これは助けないかもしれないけど、私はあなたのユースケースを見て、私はあなたがのために/管理者の要求は/管理/に行く必要があることを知っていますか疑問に持っており、 /admin.phpではなく?

私は[AZ]あなたの書き換えルールが明確にあなたが/の要求を受けた場合と述べているわけ+あなたがtry_filesがに/管理者をプッシュしたいけれども

を/[az]+.phpに書き換えされなければなりません/ admin /代わりに?

Apacheのルールを見て:

RewriteRule ^([^/\.]+)/?$ $1.php [L] 

私はあなたがx.phpに送信されます何を制限しようとしていることをここに参照してください。私はあなたのnginxの書き換えには、このような制限はありません。

関連する問題