0
に書き換え一緒try_filesを使用する:は、私はすでにこの種のものを実行するのnginxで書き換えを広範囲に使用するnginxの場所ブロック
/photos/123344 -> /photos/photos.php?id=123344
/photos/london-2016 -> /photos/photo-shoot.php?name=london-2016
現在、私は、他の(非動的)ページにはルールがありません。例えば、私はそれぞれの.phpファイルに対して個別rewrite
ルールを指定せずに
/photos/shoot-register.php -> /photos/shoot-register
でもなりたい
/photos/shoot-register.php -> /photos/shoot-register.php
。
try_files
はここに正しい指示であると思われる:私は2つの書き換え行を削除しない限り、
location ~ ^/photos {
try_files $uri $uri.php?$args;
rewrite ^/photos/([0-9]+)(/?)$ /photos/photo.php?id=$1;
rewrite ^/photos/([^/\.]+)(/?)$ /photos/photo-shoot.php?name=$1;
}
しかし、これは動作しません。
私はそれが試行ファイルの後に実行が停止しないことを意味すると思いますか?それは "shoot-register.php"を見つけたが、実行を続け、/photos/photo-shoot.php?name=shoot-register.php
で終わる?
try_filesが一致するものを見つけるのに成功した後、どうやって止めることができますか?
おかげ
確かに実行可能な解決策は、ベストプラクティスであり、訓練されていない目に比べて不必要に見えますか? – Codemonkey
それは私が考えることができる唯一のものです。問題は、try_filesディレクティブが、オプションの1つが有効なときに停止して戻りませんということです。あなたのバージョンでは、それは.phpの部分で停止し、次にlocationディレクティブを続けます。私のバージョンでは、同じことをしますが、リライトディレクティブは存在しないので、期待している内容を返します。 – miah