1

たくさんの Web サイトやチュートリアルを調べましたが、解決策が見つかりません。次のスニペットは動作し、http: //example.com/page/pot は pot.php コンテンツを返します

RewriteEngine on
RewriteRule ^page/([^/]*)$ $1.php?page=$1 [L]

逆にうまくいかない

RewriteEngine on
RewriteRule ^([^/]*)/page$ $1.php?page=$1 [L]
4

2 に答える 2

2

現在のアプローチでは、Apache が書き換えられた URI を再挿入してさらにルールを処理するため、無限ループが発生します。

次のように THE_REQUEST 変数を使用する必要があります。

RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+page/[^.]+\.php\?page=([^\s&]+) [NC]
RewriteRule ^ page/%1? [R=302,L]

# internal forward from pretty URL to actual one
RewriteRule ^page/([^/]*)/?$ $1.php?page=$1 [L,QSA,NC]
于 2013-10-30T18:08:01.617 に答える
0

使用してみてください:

RewriteEngine on
RewriteRule ^([^/]+)/page$ $1.php?page=$1 [L]
于 2013-10-30T16:19:12.073 に答える