我需要将大写的URL写为小写。
我让那部分工作了。
然而,我遇到了问题。我有兴趣从以上*.html?vs=12312312
我尝试了以下内容:
RewriteCond %{REQUEST_URI} !^.*\.(html\?vs=) [NC]
但它没有用。
http://foo.com/com.foo.bar/content/Any.html?vs=12312312
以上应保持原样,不得重写。
上述规则有什么问题?什么应该是正确的语法?
更新
我尝试了以下内容:
RewriteCond %{REQUEST_URI} !(.*\.html\?vs=.*)$ [NC]
但仍然没有运气。
答案 0 :(得分:1)
查询字符串不属于REQUEST_URI
,它存储在QUERY_STRING
中。所以尝试这样的事情,这比你现有的规则要好:
RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{QUERY_STRING} ^vs=[^&=]+$
RewriteRule ^ - [L]
你需要这样做的原因(作为它自己的单独规则),而不是对现有规则进行排除,是因为你不能对RewriteCond
的否定匹配进行AND,所以把如果只有一个应用(.html或?vs = nnn),它们在你现有的规则上作为负匹配会阻止它运行。要在两者都适用时拒绝,你需要在一个单独的积极匹配中这样做。
如果您有其他规则需要在此之后应用于这些网址,请查看[S=1]
标记(documentation),该标记将跳过匹配的下一个规则,而不是{{1}这表示在匹配后停止处理(因此不会对这些URL应用您的后续规则)。
规则[L]
只是说不改变任何东西,它只用于应用旗帜的效果。