htaccess RewriteRule保存查询字符串

时间:2011-12-09 10:29:11

标签: .htaccess mod-rewrite

我有一个像这样的RewriteRule:

RewriteRule ^thesection$ /sections.php [L]
RewriteRule ^thesection/(.*)$ /sections.php?show=$1 [L]

所以,如果我输入domain.com/thesection - >它完美无缺

但是!如果我输入domain.com/thesection/hello,它会重定向到domain.com/thesection?show=hello

我不知道我做错了什么,我花了几个小时谷歌搜索。请帮忙!

提前致谢

1 个答案:

答案 0 :(得分:9)

试试这个并告诉我

RewriteEngine On
RewriteRule ^thesection/?$ /sections.php [L,QSA]
RewriteRule ^thesection/([a-z0-9\-_]+)/?$ /sections.php?show=$1 [L,QSA]

这会将domain.com/thesection/hello重定向到sections.php?show=hello

QSA标志意味着:

  

此标志强制重写引擎附加查询字符串的一部分   替换字符串到现有字符串,而不是替换   它。如果要通过a向查询字符串添加更多数据,请使用此选项   重写规则。

所以你可以添加更多参数,例如:http://www.domain.com/thesection/hello/?page=1这将输出:

Array (
 [show] => hello
 [page] => 1
)