在[L]无效的情况下循环使用RewriteRule

时间:2015-01-12 20:39:43

标签: .htaccess loops mod-rewrite

我知道这已被覆盖,但我找不到问题的答案。

多年来我一直有这个页面:www.mysite.com/page.php但决定把它变成一个很好的网址:www.mysite.com/page /

我做过:

RewriteRule ^page/?$ page.php [L]

一切都很好,但是现在我也希望它反过来,所以如果有人在page.php中输入,它会显示/ page /,但我只是得到一个循环:

RewriteCond %{REQUEST_URI} !^/page/
RewriteRule ^page.php$ /page/ [R=301,L]

我不明白为什么。 [L]似乎不起作用,但是[end]标志我得到500.

1 个答案:

答案 0 :(得分:0)

这不是正确的做法。您可以使用:

RewriteEngine On
RewriteBase /

# external redirect from /page.php to /page
RewriteCond %{THE_REQUEST} \s/+(page)\.php[?\s] [NC]
RewriteRule ^ %1 [R=302,L]

# internal forward from /page to /page.php
RewriteRule ^(page)/?$ $1.php [L,NC]