我正在建立一些缓存到我的网站之一,我似乎无法找到是否有办法添加一个条件与mod_rewrite仅在请求的查询字符串为空时应用。
例如,我很想知道我是否可以获得没有像
这样的查询字符串的请求http://www.example.com/
加载页面
http://www.example.com/index.home.html
但任何带有查询字符串的请求,例如
http://www.example.com/?id=32
正常加载而不受重写的影响。
我错过了什么?
答案 0 :(得分:34)
我明白了。这似乎做得很好:
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/$ /index.home.html
当然,如果有更好的方式,我很乐意听到它。
答案 1 :(得分:4)
我知道这些很旧,但更好的选择是:
col1
答案 2 :(得分:2)
为了匹配空的QueryString,我们在条件模式中使用 ^ $ 。以下规则会将 /file.html 重定向到 /file2.html ,但由于条件的原因,它无法重定向 /file.html?querystring 。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?file.html$ /file2.html? [L,R]
规则末尾的空问号非常重要,因为它会丢弃旧的查询字符串,否则重定向的网址将显示为 /file2.html?querystring 。
或者:
上的RewriteEngineRewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?file.html$ /file2.html [L,R,QSD]
如果有查询字符串,QSD标志不会保留查询字符串。