重定向匹配排除 URL 不起作用
Redirect Match with excluding URLs doesnt work
我使用 RedirectMatch
规则应该排除以下两个 URL:
citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen
citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen
我将此规则与正则表达式一起使用,但出现 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/
知道为什么它不起作用吗?
/citycards-4-you-munchen-hirtenstrasse-18-munchen ).+)$
您的 RewriteRule
模式末尾附近有一个未转义的 space。这肯定会导致 500 错误,因为 space 是定界符并且参数不匹配(无效标志)。
看起来这是一个拼写错误,应该直接删除?
您目前的规则是:(为了更好地分解成多行 display/understanding):
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/
基本上,您的正则表达式表示:
- 匹配
/citycards/citycards-locations/muenchen/
其后不跟以下任何一项
citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen
,
citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen
(在18-munchen
之后有一个space)
- 匹配所有内容直到 URI 结束
并将匹配的 URI 重定向到:/citycards/citycards-locations/muenchen/
,这与匹配的 URL 基本相同。
我看到 2 个问题。
- 如果您的否定前瞻中的空白 space 不被视为模式的一部分,您实际上是将 4 个参数传递给
RedirectMatch
指令,导致状态 500 错误
- 如果模式被正确解析,你就会有一个无限的重定向循环。
我使用 RedirectMatch
规则应该排除以下两个 URL:
citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen
citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen
我将此规则与正则表达式一起使用,但出现 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/
知道为什么它不起作用吗?
/citycards-4-you-munchen-hirtenstrasse-18-munchen ).+)$
您的 RewriteRule
模式末尾附近有一个未转义的 space。这肯定会导致 500 错误,因为 space 是定界符并且参数不匹配(无效标志)。
看起来这是一个拼写错误,应该直接删除?
您目前的规则是:(为了更好地分解成多行 display/understanding):
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/
基本上,您的正则表达式表示:
- 匹配
/citycards/citycards-locations/muenchen/
其后不跟以下任何一项
citycards/citycards-locations/munchen/citycards-trachtenvogl-reichenbachstr-47-munchen
,citycards/citycards-locations/munchen/citycards-4-you-munchen-hirtenstrasse-18-munchen
(在18-munchen
之后有一个space)
- 匹配所有内容直到 URI 结束
并将匹配的 URI 重定向到:/citycards/citycards-locations/muenchen/
,这与匹配的 URL 基本相同。
我看到 2 个问题。
- 如果您的否定前瞻中的空白 space 不被视为模式的一部分,您实际上是将 4 个参数传递给
RedirectMatch
指令,导致状态 500 错误 - 如果模式被正确解析,你就会有一个无限的重定向循环。