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

然后它匹配第二个重写规则的重写条件并被重写为:

http://mydomain/demo/rewrite.cgi

你的循环开始了。

这里可能有两个修复a)将L标志添加到第一个重写规则(使其成为将发生的最后一次重写)或b)如果您的演示重写后面没有斜杠我会隐含:

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

如果这不是原因,则另一个选项是打开重写规则日志记录并查看正在执行什么来创建循环:

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