0

私の.htaccessファイルには次のものがあります

RewriteRule ^post/(.*)$ index.php?post=$1 [NC]
RewriteRule ^(.*)$ index.php?page=$1 [NC]

に書き直すことを除いて、(たとえば)に書き直すことを期待してmysite.com/xいますが、機能しません。mysite.com/index.php?page=xmysite.com/post/xmysite.com/index.php?post=x

4

2 に答える 2

4

Lディレクティブを追加します。例:RewriteRule ^post/(.*)$ index.php?post=$1 [L,NC]

L最後を意味します。つまり、書き換えルールが一致すると、次のルールの処理が停止します。

于 2012-04-23T11:04:05.700 に答える
0

フラグを追加[L]するだけでは十分ではありません。書き換えは、それ以上書き換えが発生しなくなるまでサイクルで行われるためです。

RewriteRule Last [L]フラグが機能していませんか?


かなりの数のアプローチがあります-ここにそれらの1つがあります(おそらくあなたの例のルールを考慮すると最良のアプローチです)。

# do not do anything for index.php (already rewritten URLs)
RewriteRule ^index\.php$ - [L]

# my rewrite rules
RewriteRule ^post/(.*)$ index.php?post=$1 [NC,L]
RewriteRule ^(.*)$ index.php?page=$1 [NC,L]
于 2012-04-23T13:58:42.167 に答える