2010-09-02 16 views
14

我建立了一些缓存到我的网站之一,我似乎无法找到是否有一种方法来添加条件与mod_rewrite只适用于请求上的查询字符串是空的。重写一个空的查询字符串

比如,我很想知道,如果我能在

http://www.example.com/index.home.html 

但随着查询字符串的请求有没有查询字符串像

http://www.example.com/ 

加载页面的请求,如

http://www.example.com/?id=32 

加载正常,不受重写的影响。

我错过了什么?

回答

32

我想通了。这似乎在做的很好:

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^/$ /index.home.html 

当然,如果有更好的方法,我很乐意听到它。

+0

非常感谢!真的帮助我解决生产问题。 – URB 2017-06-05 17:30:06

3

我知道这个的人很老了,但更好的方法是:

RewriteCond %{QUERY_STRING} -n 
RewriteRule ^/$ /index.home.html 
+1

为什么它更好? – 2017-02-02 17:42:07

0

来匹配空查询字符串,我们用我们的条件模式^$。以下规则重定向/file.html/file2.html但由于条件导致无法重定向/file.html?querystring

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^/?file.html$ /file2.html? [L,R] 

在规则的最后一个空的问号是重要的,因为它摒弃旧的查询字符串,否则重定向的URL看起来像/file2.html?querystring