我有一个以下的标准
如果查询string与Microwave_Ovens
文本相匹配,则需要在Request URI中用Microwave-Ovens
(用连字符replace下划线)replace。
它按照下面提到的第一组3行的预期工作。 我其实也需要做一些其他types(假设Vacuum_Cleaners
)也是一样的。 我添加了第二组3行,但它不工作。 无论我首先指定的只是工作。
我的重写条件和规则如下:
RewriteCond %{QUERY_STRING} ^(.*)Microwave_Ovens(.*)$ RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Microwave-Ovens%2 [R=301,L] RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI] RewriteCond %{QUERY_STRING} ^(.*)Vacuum_Cleaners(.*)$ RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Vacuum-Cleaners%2 [R=301,L] RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]
任何人都可以请build议我在这里做错了什么
RewriteCond %{QUERY_STRING} ^(.*)Microwave_Ovens(.*)$ RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Microwave-Ovens%2 [R=301,L] RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]
你的规则看起来比你在这个问题上所做的更多吗? 但是这里的主要问题似乎是第二个RewriteRule
指令。 前面的RewriteCond
指令只适用于第一个RewriteRule
指令。 所以,第二个RewriteRule
将无条件地运行,并捕获可能包含Vacuum_Cleaners
任何请求。
既然你已经在第二个规则块中重复了这个指令,那么也许简单地删除第一个就足够了。 例如:
# 1 RewriteCond %{QUERY_STRING} ^(.*)Microwave_Ovens(.*)$ RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Microwave-Ovens%2 [R=301,L] # 2 RewriteCond %{QUERY_STRING} ^(.*)Vacuum_Cleaners(.*)$ RewriteRule ^([^_]*)_+([^_]*)$ /Mr10q/$1-$2?%1Vacuum-Cleaners%2 [R=301,L] # 3 RewriteRule ^([^_]*)_+(.*)$ $1-$2 [N,DPI]