nginxの場所が負の一致を許可していないため、以下は明らかに機能しません。(参照: https://stackoverflow.com/a/16304073/398519 )
セットアップを切り替えることができない場合は、次のような場所が必要になります。
location !~* \.php$ {
rewrite /([a-z1-9]+)$ /page1.php?h=$1 last;
}
私は(テストされていない)、それが一致.php
したり、他のアイテムと一致したりしてはならず.ext
、webroot部分からのみプルする必要があると信じています。残念ながら、現時点ではテストできません。
まず第一に、最初のルールがあいまいすぎます。1ページ目と2ページ目を区別する何かが必要です。
そのような: http://www.domain.com/p1/xxxxxxx
そうすれば、p1 / p2 などで解析し、その処理方法を知ることができます。完全を期すために、ルールの例をいくつか示します。
rewrite /p1/([a-z1-9]+)$ /page1.php?h=$1 last;
rewrite /p2/([a-z1-9]+)$ /page2.php?h=$1 last;
元のルールを使用する場合は、ファイル チェックを追加するか、正規表現を一致しないように変更する必要があります。または.php
、ルートの場所の前にセクションを作成してそこにトラップされる.whatever
以外に、nginx でこれを行う方法がわかりません。location
最初。