在 [L] 不起作用的 RewriteRule 中循环
Loop in RewriteRule with [L] not working
我知道这已经涵盖了,但我就是找不到我的问题的答案。
多年来我一直有这个页面:www.mysite.com/page.php 但我决定把它变成一个漂亮的 url: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.
这不是正确的做法。您可以使用:
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)/?$ .php [L,NC]
我知道这已经涵盖了,但我就是找不到我的问题的答案。
多年来我一直有这个页面:www.mysite.com/page.php 但我决定把它变成一个漂亮的 url: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.
这不是正确的做法。您可以使用:
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)/?$ .php [L,NC]