我有一个像
这样的文件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服务器错误???
答案 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