一个简单的301重定向在我的htaccess中创建了一个无限循环?

时间:2016-05-02 15:12:33

标签: .htaccess url mod-rewrite http-status-code-301

我在我的网站example.com/foo.php上有这个网址,我在htaccess中将其更改为example.com/foo

RewriteRule ^foo$ foo.php [NC,L]

它工作正常。但是我想从旧网址到新网址进行301重定向。所以我在我的htaccess中添加了这一行:

RewriteRule ^foo.php$ http://example.com/foo [L,NC,R=301]

我得到了无限循环的重定向......如何解决?

2 个答案:

答案 0 :(得分:0)

您可以使用THE_REQUEST变量来避免循环错误:

RewriteCond %{THE_REQUEST} /foo\.php [NC]
RewriteRule ^foo\.php$ http://example.com/foo [L,R=301]
RewriteRule ^foo$ foo.php [NC,L]

或者,如果您使用的是apache 2.4,则可以使用END标志

RewriteRule ^foo\.php$ http://example.com/foo [L,R=301]
RewriteRule ^foo$ foo.php [NC,END]

答案 1 :(得分:0)

如果更改顺序,则不应循环工作。试试波纹管工作正常:

RewriteEngine on
RewriteRule ^foo.php$ http://example.com/foo [L,NC,R=301]
RewriteRule ^foo$ foo.php [NC,L]
相关问题