我在HTACCESS文件中尝试以下内容:
我想301重定向此 - > http://www.domain.com/somepage.php?page=foo
到此 - > http://www.domain.com/my-pretty-url/
当我改变网站上的内部链接以阅读我想要的内容并且我不使用R = 301标志时,这样可以正常工作:
RewriteRule ^my-pretty-url/$ /index\.php?page=foo [L]
但是......这里的故障是我还想301将任何外部请求重定向到服务器,当我处理它时,它会让我进入重定向循环。
RewriteCond %{REQUEST_URI} /index.php$
RewriteCond %{QUERY_STRING} ^page=foo$
RewriteRule ^.*$ http://www.domain.com/my-pretty-url/? [R=301,L]
RewriteRule ^my-pretty-url/$ /index\.php?page=foo [L]
RewriteCond规则本身不起作用,只有底部的单个RewriteRule本身可用于内部重写,但它不处理外部请求。
显然,如果我在一起,那就是创造一个循环。我该如何解决这个问题?
谢谢!
答案 0 :(得分:4)
请尝试以下操作以防止循环
#prevent internal redirects, and prevent loop
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_URI} /index.php$
RewriteCond %{QUERY_STRING} ^page=foo$
RewriteRule ^.*$ http://www.domain.com/my-pretty-url/? [R=301,L]
RewriteRule ^my-pretty-url/$ /index\.php?page=foo [L]