我的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
它们都可以工作,但它不能解析后的参数吗?
即
www.domain.com/account/settings
按照我的意愿工作,但如果URL中有更多的$ _GET参数,那么就不会对其进行解析。
即中国网站www.domain.com/account/settings?parm=value < br />不起作用,最后一个parm不会被解析到服务器。
由于
答案 0 :(得分:1)
您的规则中需要QSA
标记。 QSA (Query String Append)
标志会在添加新查询参数时附加现有查询参数。
您转换的规则:
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]