2016-01-22 78 views
1

在此先感谢Web服务器的URL重定向循环

是做Web服务器URL重定向(httpd.conf文件),试图将URL从

重写规则^/WPS重定向/(.*)/保险/医院为

现金收益http://hostname/wps/ $ 1 /零售 - 银行/保险/医院为现金收益[L,R = 301]

当我试图击中老一新的URL我得到的波纹管网页浏览器错误“ 这个网页年龄有重定向循环“

http://hostname/wps/portal/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/零售银行/保险/医院现金 - 效益

输出是这样的我不知道为什么得到这个循环错误,我清除了所有缓存历史记录中的每一件事情,但仍然错误退出。

+1

它可能是网站上的格式,但我看不到您的预期来源和目标网址。请你可以提供这些,以便我可以计算出正则表达式在做什么。 –

+1

我需要一个实际的源URL和实际预期的URL的例子。您的重写规则会匹配您的旧网址和您的新网址,这就是为什么它正在循环。如果你能给我看一个旧的URL和一个新的URL,那么我可以制定一条规则来匹配旧的但不是新的规则 –

回答

2

严格说到“循环”问题。如果我正确地阅读了你的RewriteRule,那么你的替换(目标URI)看起来就像它会匹配你的模式......并且这将解释循环。在这种情况下,通常的做法是在返回时使用RewriteCond忽略替换(目标URI)。似乎唯一替代的是/ retail-banking /部分。因此,也许试试这个:。

的RewriteCond%{REQUEST_URI} + /零售银行/

这将需要直接去你的重写规则

修订以上 - 跳过标记示例:

RewriteCond%{REQUEST_URI}。+/retail-banking/
RewriteRule。? - [S = 50]
重写规则1
重写规则2
......
重写规则50

+1

要让一个RewriteCond适用于多个RewriteRules,你必须否定(反向)RewriteCond并使用用skip标志引导RewriteRule。这假设你想要应用条件的所有RewriteRules被分组在一起并且立即跟随。我编辑了我的答案以包含一个示例。跳过标志记录在这里:https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_s –

+1

@VinodKumarP,这已经从你最初的问题发展了很多,可能需要咨询超出范围这个线程/论坛。重要的是,您需要花时间了解这些示例的工作方式,以便您可以将它们应用并定制到您自己的配置中(如果需要,请参阅文档)。你之前说过,如果你在Cond上面添加了“每个URL都不起作用,那么URL正在工作”。使用跳过选项将有效地做同样的事情。确保你的RewriteRules是有序的,这样只有那些需要应用Cond的人才会在跳过分组 –

+0

@VinodKumarP。请在新问题下提交最新的问题。这是你问到的第四个问题:1.如何修复重写循环。 2.如何将RewriteCond应用于多个规则。 3.使用跳过标志不能正确显示页面。 4.重写替换中缺少%编码。这些都很好,但它们需要作为单独的问题提交。 –

0

所以,你是想从这个网址获得:

主机名/ WPS /门/保险/医院现金收益

这个网址:

主机名/ WPS /门/零售银行/保险/医院现金收益

它们基本上是一样的,只不过你的新人有一个额外的“零售银行”级别。 /(.*)/匹配任何字符,包括“/”和其他字母。所以它会匹配/门户/和/门户/零售银行和/门户/零售银行/零售银行,这就是为什么你有重定向循环。

为什么不把整个网址放入?为什么你甚至会放入通配符搜索,因为它是如此具体?如果由于某种原因确实需要匹配基准网址,则应该指定您期望的字符数和您期望的级别数,而不是通配符搜索,如下所示:

^/wps /([A-z0这将匹配所有字母字符,所有数字字符和“ - ”字符,但不匹配“/”。您可以在URL中输入的唯一其他字符是“%”,但除非您有一些需要转义的奇怪字符,否则很可能不需要这些字符。该模式仅期望/ wps /和/ insurance /之间的一个级别,因此它不会与新网址匹配。试试看,如果您因为有其他网址需要重定向而困扰该模式,请尝试regexpal,启用多行,然后您可以粘贴多个网址,并确保只有您想要匹配的网址。

+0

所以你输入的规则是 ^/wps /([A-z0-9 \ - ] *)/ insurance/hospital-cash-benefit http:// hostname/wps/$ 1/retail- banking/insurance/hospital-现金收益 我看到,当复制和粘贴一个短跑没有逃脱 –