我使用RedirectMatch
规则,该规则应排除以下两个URL:
citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen
citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen
我将此规则与regex一起使用,但我得到一个500内部服务器错误:
RedirectMatch 301 /citycards/citycards-locations/muenchen/((?!citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen|citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen ).+)$ /citycards/citycards-locations/muenchen/$1
有什么想法为什么它不起作用吗?
您当前的规则是:(分解为多行以更好地显示/理解):
RedirectMatch
301
/citycards/citycards-locations/muenchen/((?!citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen|citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen ).+)$
/citycards/citycards-locations/muenchen/$1
基本上,你的正则表达式是这样说的:
- 匹配
/citycards/citycards-locations/muenchen/
其后面没有以下中的任何一个
- CCD_ 5
citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen
(在18-munchen
之后有一个空格)
- 匹配所有内容直到URI结束
并将匹配的URI重定向到与匹配的URL基本相同的CCD_ 8。
我看到两个问题。
- 如果否定前瞻中的空格不被视为模式的一部分,那么实际上是在向
RedirectMatch
指令传递4个参数,导致状态500错误 - 如果模式被正确解析,那么就有了一个无限的重定向循环
/citycards-4-you-munchen-hirtenstrasse-18-munchen ).+)$
在RewriteRule
模式的末尾附近有一个未绘制的空间。这肯定会导致500错误,因为空格是分隔符,参数将不匹配(无效标志)。
看起来这是一个拼写错误,应该简单地删除吗?