RewriteRule用于当前目标的同一文件

时间:2011-09-28 09:37:55

标签: .htaccess mod-rewrite

我有一个像

这样的文件
www.domain.com/test.php

我想写一条规则,当这个被调用时,我正在向这个文件发送一个参数,但我不希望它们显示在URL I.E.当上述路径在浏览器中时,实际规则应为:

www.domain.com/test.php?state=yes

.htaccess规则应该是什么? 目前我的.htaccess

RewriteCond %{HTTP_HOST} ^www\.domain\.com$  [NC]
RewriteRule ^test\.php$ /test.php?view=index [NC,L]

但是这会导致500服务器错误???

1 个答案:

答案 0 :(得分:1)

我没有收到500错误,你的.htaccess还有什么?

以下是您可以使用的内容:

RewriteEngine on
RewriteBase /
RewriteRule ^test\.php test.php?view=index [NC,L,QSA]

缺少QSA标志:

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串合并。

考虑以下规则:

RewriteRule /pages/(.+) /page.php?page=$1 [QSA]

使用[QSA]标记,/pages/123?one=two的请求将映射到/page.php?page=123&one=two。如果没有[QSA]标志,则相同的请求将映射到/page.php?page=123 - 也就是说,现有的查询字符串将被丢弃。

来源:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa