apache重写导致重定向循环的规则
我试图创建一个apache(2)RewriteRule,它使用一个查询字符串将用户重定向到一个易于阅读的URL,但是它导致了一个重定向循环 我想要实现的是,当用户请求apache重写导致重定向循环的规则,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,我试图创建一个apache(2)RewriteRule,它使用一个查询字符串将用户重定向到一个易于阅读的URL,但是它导致了一个重定向循环 我想要实现的是,当用户请求index.php?layout=751&artnr=URL时,该请求将被重定向到/other/page/ 在某种程度上,重定向是有效的,但是一旦用户到达/other/page页面,Apache就会继续重定向用户 重写规则如下所示: RewriteCond %{REQUEST_URI} ^/index.php RewriteCond
index.php?layout=751&artnr=
URL时,该请求将被重定向到/other/page/
在某种程度上,重定向是有效的,但是一旦用户到达/other/page
页面,Apache就会继续重定向用户
重写规则如下所示:
RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{QUERY_STRING} ^layout=751&artnr=(.+)$
RewriteRule ^index\.php$ another/page/%1? [R=301,L]
RewriteCond %{THE_REQUEST} /index\.php\?layout=751&artnr=([^\s&]*) [NC]
RewriteRule ^ another/page/%1? [R=301,L,NE]
我已经搜索了很多关于这种情况的问题,但是没有一个真正能够解决我的问题,因为这些问题不使用查询字符串
我还尝试添加了RewriteOptions maxrirects=1
选项,但这也不能解决问题
任何帮助都将不胜感激
提前感谢。使用
请求变量,而不是请求URI
,如下所示:
RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{QUERY_STRING} ^layout=751&artnr=(.+)$
RewriteRule ^index\.php$ another/page/%1? [R=301,L]
RewriteCond %{THE_REQUEST} /index\.php\?layout=751&artnr=([^\s&]*) [NC]
RewriteRule ^ another/page/%1? [R=301,L,NE]
_REQUEST
变量表示Apache从浏览器收到的原始请求,在执行某些重写规则后不会被覆盖
这假设已在该规则上方设置了一个RewriteBase
清除浏览器缓存或使用新浏览器测试此更改。使用请求
变量,而不是像这样使用请求
:
RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{QUERY_STRING} ^layout=751&artnr=(.+)$
RewriteRule ^index\.php$ another/page/%1? [R=301,L]
RewriteCond %{THE_REQUEST} /index\.php\?layout=751&artnr=([^\s&]*) [NC]
RewriteRule ^ another/page/%1? [R=301,L,NE]
_REQUEST
变量表示Apache从浏览器收到的原始请求,在执行某些重写规则后不会被覆盖
这假设已在该规则上方设置了一个RewriteBase
清除浏览器缓存或使用新浏览器测试此更改。非常感谢,它终于起作用了!也谢谢你的解释,所以我理解它是如何工作的。你已经接受了答案,这就足够了。很快,你将有15个代表点,可以投票给任何答案。非常感谢,它终于工作了!也谢谢你的解释,所以我理解它是如何工作的。你已经接受了答案,这就足够了。很快,你将有15个代表点,可以投票给任何答案。