0

.htaccess ファイルがあり、www.example.com/demo/index.php と入力するたびに、ループでリダイレクトされ続けます。なぜこれが起こっているのか、私は本当に混乱しています。

# Do not remove this line, otherwise mod_rewrite rules will stop working

RewriteBase /

Options +Multiviews

AddHandler application/x-httpd-php .css

AddHandler application/x-httpd-php .js

RewriteEngine On


#NC not case sensitive
#L last rule don't process futher
#R 301 changes the url to what you want

RewriteRule ^demo(.*)$ finished$1 [NC]

RewriteCond %{REQUEST_URI} ^/finished/.*$
RewriteRule ^finished/(.*)$ demo/$1 [NC,R=301,L]
4

1 に答える 1

1

あなたがやっている場合、私は書き換えループが起こっているのを見ることができます:

http://mydomain/demo/rewrite.cgi

それは最初のルールによって次のように書き換えられるためです。

http://mydomain/finished/rewrite.cgi

そして、それは 2 番目の書き換えルールの書き換え条件に一致し、次のように書き換えられます。

http://mydomain/demo/rewrite.cgi

そしてあなたのループが始まります。

ここにはおそらく 2 つの修正があります。a)L最初の書き換えルールにフラグを追加する (これを最後の書き換えにする) か、b) デモの書き換えの後にスラッシュが続かない場合は、暗黙的にします:

RewriteRule ^demo([^/]+)$ finished$1 [NC]

それが原因でない場合のもう 1 つのオプションは、書き換えルールのログ記録を有効にして、ループを作成するために何が行われているかを調べることです。

RewriteLog /path/to/rewrite.log
RewriteLogLevel 3
于 2013-05-03T15:24:34.387 に答える