使用.htaccess检查空请求uri

时间:2013-06-25 09:12:12

标签: .htaccess query-string http-host

我需要重定向来自

的请求
www.mysite.com/?querystring=data 

www.mysite.com/dir/phpfile.php/?querystring=data 

这意味着它应该只翻译带有空request_uri的url(例如

www.mysite.com/css/style.css 

不应该被翻译),并且没有空的查询字符串(例如主页

www.mysite.com/ 

不应翻译)。

我写了这段代码

RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^/?(.*)$ www.mysite.com/$1 [QSA]

但它不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您拥有的规则中没有协议的域名,它看起来像mod_rewrite的URI或文件路径名。此外,您没有任何重写,因为$1反向引用了匹配中的分组(.*)必须什么都不是,因为您的条件说URI只能是{{1} }}。你可能想要这样的东西:

/

查询字符串将自动附加到结尾。如果您不想从外部重定向浏览器(从而更改位置栏中的URL),请删除RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC] RewriteRule ^/?$ /dir/phpfile.php/ [L,R] ,或者如果您想要永久重定向,请将其替换为R

答案 1 :(得分:0)

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^(.+)$ [NC]
RewriteRule ^$ /dir/phpfile.php/ [L,QSA,R=302]

验证一切正常后,将R=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。