2

nginxで単純な書き換えURLを作成するのに苦労しています。
私の構成は次のようになります。

location /foo/bar {
    rewrite ^/(.+)$ /index.php?p=$1 break;
}

たとえば、 (もちろん内部的に)に/foo/bar/bazなる必要があります/foo/bar/index.php?p=baz

ただし、を介してアクセスされるすべてのもの/foo/bar/は、ルートにあるindex.phpのダウンロードをトリガーします。これを機能させるにはどうすればよいですか?

私も使ってみましたが、パスをからtry_files除外する方法がわかりません。/foo/bar/$uri

4

2 に答える 2

10

変化する

rewrite ^/(.+)$ /index.php?p=$1 break;

rewrite ^/(.+)$ /index.php?p=$1 last;

http://wiki.nginx.org/HttpRewriteModule#rewriteに基づいて、

last-現在の書き換えディレクティブの処理を完了し、使用可能なすべての場所からURIで一致するものを検索して、プロセス(書き換えを含む)を再開します。

[編集]breakを使用すると、同じロケーションブロック内にとどまります。あなたの場合、そのロケーションブロック内に他のルールはありません。したがって、デフォルトでは、nginxはそれをファイルリクエストとして提供します。

于 2013-03-14T21:52:51.613 に答える
0

PHPファイルは、通常のファイルとして解釈および処理されません。FPMなどのCGIサーバーをセットアップし、それらのプロセスに接続を渡す必要があります。

詳細については、 http://wiki.nginx.org/Configurationを参照してください。

アップデート

なぜあなたの例が壊れているのかわかりません。rewriteしかし、私の推測では、をに変更する必要がありますtry_files

location /foo/bar {
    try_files $uri $uri/ /index.php?p=$uri;
}
于 2013-03-14T21:05:52.657 に答える