我正在努力实现以下与htaccess。重定向301域1/menu 1/域2/menu 1/重定向301域1/menu 1/submenu 1域2/menu 2但它记住了前一条规则,并将其放在第二条规则中的menu 1之间,如Domain 2/menu 1/menu 2。我如何才能避免这一点和每一个规则不遵循其余的规则?先谢了。我已经尝试了所有的可能性,但到目前为止没有任何工作。
zphenhs41#
颠倒这两条规则。mod_alias Redirect指令是前缀匹配,因此第一条规则匹配/menu1/submenu1请求,match 之后的所有内容都附加到目标上。但是你也不能使用Redirect指令来匹配“domain”,它只能匹配URL路径。查看Apache文档:
Redirect
/menu1/submenu1
eaf3rand2#
你不能包含Domain1。它应该看起来像这样:
Domain1
Redirect 301 /menu1/ Domain2/menu1/
mod_alias#Redirect的文档说:然后,任何以URL-path开头的请求将返回一个重定向请求到目标URL的位置。除了匹配的URL-path之外的其他路径信息将被附加到目标URL。第一条规则也会匹配所有你希望第二条规则适合的情况,所以第二条规则永远不会匹配。要激活第二条规则(具有更深的路径)而不是第一条规则,您必须交换顺序:
Redirect 301 /menu1/submenu1 Domain2/menu2 Redirect 301 /menu1/ Domain2/menu1/
像这样,不太深的一个将匹配不匹配更深的一个的所有拟合情况。
2条答案
按热度按时间zphenhs41#
颠倒这两条规则。mod_alias
Redirect
指令是前缀匹配,因此第一条规则匹配/menu1/submenu1
请求,match 之后的所有内容都附加到目标上。但是你也不能使用
Redirect
指令来匹配“domain”,它只能匹配URL路径。查看Apache文档:
eaf3rand2#
你不能包含
Domain1
。它应该看起来像这样:mod_alias#Redirect的文档说:
然后,任何以URL-path开头的请求将返回一个重定向请求到目标URL的位置。除了匹配的URL-path之外的其他路径信息将被附加到目标URL。
第一条规则也会匹配所有你希望第二条规则适合的情况,所以第二条规则永远不会匹配。
要激活第二条规则(具有更深的路径)而不是第一条规则,您必须交换顺序:
像这样,不太深的一个将匹配不匹配更深的一个的所有拟合情况。