我需要重定向来自
的请求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]
但它不起作用。有什么建议吗?
答案 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
(永久重定向)。