如果我有以下规则:
Rewrite 301 /page/22 http://newdomain.com/
Rewrite 301 /page/23 http://newdomain.com/test
Rewrite 301 /page/24 http://newdomain.com/test2
Rewrite 301 / http://newdomain.com
顶部的规则是否优先于我底部的规则? 并将使用:
Rewrite 301 / http://newdomain.com
将其他规则未捕获的所有请求重定向到新域? 或者仅当URL的domainName.com后面带斜杠时才会起作用吗?
我还需要逃避规则中的问号,例如:
Redirect 301 /items/item/94?Test123 http://newdomain.com
答案 0 :(得分:0)
顶部的规则是否优先于我底部的规则?并将使用:
规则的顺序很重要,因为规则按照它们出现的顺序应用。但是,Rewrite
不是有效的apache指令。有Redirect
,它是mod_alias的一部分,RewriteRule
是mod_rewrite的一部分。
Rewrite 301 / http://newdomain.com
假设您在这里实际意味着Redirect
,这将重定向所有未被先前规则捕获的请求。这是因为Redirect
将两个URL路径链接在一起,因此/
之后的任何内容都会传递给目标。您可能还需要/
http://newdomain.com
我还需要逃避规则中的问号,例如:
没有。 Redirect
语句与查询字符串或URL中?
之后的所有内容都不匹配。您可以匹配查询字符串的唯一方法是使用mod_rewrite和%{QUERY_STRING}
变量。与您尝试做的相同的是:
RewriteCond %{QUERY_STRING} ^Test123$
RewriteRule ^items/item/94$ http://newdomain.com/ [L,R=301]