0

我需要从

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]

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

4

2 回答 2

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

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

确认它工作正常后,替换R=302R=301. R=301在测试你的 mod_rewrite 规则时避免使用(永久重定向)。

于 2013-06-25T12:29:41.067 回答
0

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

RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC]
RewriteRule ^/?$ /dir/phpfile.php/ [L,R]

查询字符串将自动附加到末尾。R如果您不想从外部重定向浏览器(从而更改地址栏中的 URL),请删除,如果您想要永久重定向,请将其替换为R=301

于 2013-06-25T09:27:58.453 回答