提前感谢
正在进行Web (httpd.conf )中的URL重定向,试图从
RewriteRule ^/wps/(.*)/保险/医院-
现金福利http://hostname/wps/1美元/零售-银行/保险/医院-现金-福利L,R=301
当我试图用旧的网址点击新的网址时,在浏览器中得到了下面的错误:“这个网页有一个重定向循环”
http://hostname/wps/portal/零售-银行/保险/医院-现金福利
输出是这样的,我不知道为什么要得到这个循环错误,我清除了浏览器中的所有缓存、历史记录,但是仍然存在错误。
发布于 2016-01-22 23:31:06
严格地说“循环”问题。如果我正确地读取了您的RewriteRule,那么您的替换(目标URI)看起来将与您的模式匹配.这就解释了这个循环。在这种情况下,一个常见的实践是在替换(目标URI)返回时使用RewriteCond来忽略它。这一替代的唯一部分是/零售银行/部分。所以不妨试试这个:
RewriteCond %{REQUEST_URI} .+/零售银行/
而这需要直接高于你的RewriteRule
更新-跳旗示例:
RewriteCond %{REQUEST_URI} .+/零售银行/
RewriteRule .?- S=50
RewriteRule 1
RewriteRule 2
...
RewriteRule 50
发布于 2016-01-24 15:40:30
因此,您希望从这个URL中获得:
hostname/wps/portal/insurance/hospital-cash-benefit
到此URL:
hostname/wps/portal/retail-banking/insurance/hospital-cash-benefit
他们基本上是一样的,除了你的新的有一个额外的‘水平’的“零售银行”。/(.*)/匹配任何字符,包括"/“和其他字母。因此,它将匹配/portal/和/portal/散户银行和/portal/零售银行/零售银行,这就是为什么您要进行重定向循环。
为什么不直接把整个URL放进去呢?既然通配符搜索如此具体,你为什么还要这样做呢?如果您确实出于某种原因要匹配基本URL,那么应该指定您期望的字符和期望的级别数,而不是通配符搜索,如下所示:
^/wps/(A-z0-9-*)/insurance/hospital-cash-benefit
这将匹配所有的字母字符,所有的数字字符和"-“字符,但不是"/”。在URL中唯一有效的其他字符是"%“,但是除非您有一些需要转义的奇怪字符,否则您很可能不需要这个字符。该模式只期望在/wps/和/insurance/之间设置一个级别,因此它将与新的URL不匹配。尝试一下,如果您由于有其他URL要重定向而与模式斗争,请尝试帝王,打开多行,然后可以粘贴多个URL,并确保只匹配匹配的URL。
https://stackoverflow.com/questions/34944876
复制相似问题