我正在 HTACCESS 文件中尝试以下操作:
我想要 301 重定向 -->http://www.domain.com/somepage.php?page=foo http://www.domain.com/somepage.php?page=foo
对此 -->http://www.domain.com/my-pretty-url/ 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 本身可以用于内部重写,但它不处理外部请求。
显然,如果我将两者放在一起,就会形成一个循环。我该如何解决这个问题?
Thanks!
请尝试以下方法来防止循环
#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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)