1

我的 mod_rewrite 再次出现问题,我的 .htaccess 文件如下所示:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w\d~%.:_\-]+)$ index.php?page=$1 [QSA]
RewriteRule ^news/([0-9]+) /news?id=$1
RewriteRule ^contact/([0-9]+) /contact?do=$1
RewriteRule ^account/([a-zA-Z]+) /account?action=$1
RewriteRule ^admin/([a-zA-Z]+) /admin?action=$1

他们都工作,但它不解析parms后记?

www.domain.com/account/settings
按我的意愿工作,但如果 URL 中有更多 $_GET 参数,则它不会被解析。

www.domain.com/account/settings?parm=value
不起作用,最后一个 parm 不会被解析到服务器。

谢谢

4

1 回答 1

1

你需要QSA在你的规则中标记。QSA (Query String Append)flag 在添加新参数时附加现有查询参数。

您转换的规则:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^news/([0-9]+)/?$ /news?id=$1 [L,QSA]
RewriteRule ^contact/([0-9]+)/?$ /contact?do=$1 [L,QSA]
RewriteRule ^account/([a-zA-Z]+)/?$ /account?action=$1 [L,QSA]
RewriteRule ^admin/([a-zA-Z]+)/?$ /admin?action=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w\d~%.:_\-]+)$ index.php?page=$1 [L,QSA]

参考:Apache mod_rewrite 简介

于 2013-11-03T18:31:40.847 回答