我想设置htaccess的共同规则使用不同的查询字符串像htaccess的查询字符串QSA
domainname.com/welcome.php?user=normal&type=free&uid=100
domainname.com/welcome.php?user=normal
domainname.com/welcome.php?log=new&theme=red
删除扩展名为.php和链接,并像
预期链接domainname.com/welcome?user=normal&type=free&uid=100
domainname.com/welcome?user=normal
domainname.com/welcome?log=new&theme=red
规则像htaccess文件设置:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/welcome/$ $1/welcome.php? [QSA,NC,L]
但一些如何不工作。难道我做错了什么。
感谢您的回复。我是编写htaccess规则的新手。如果我通过如domainname.com/welcome?user=normal&type=free&uid=100和htaccess文件集规则(如:RewriteCond%{REQUEST_URI}!welcome \ /? [NC] RewriteRule ^(。*)/ welcome /?$ $ 1/welcome.php?%1 [NC,L] – rock 2013-04-04 18:48:36
@Resh:在我看来,事实上,你的行为是正确的。然而,规则末尾附加的'?'表示'查询字符串丢弃',是'QSD'标志的替代方法。 @ faa的代码是正确的。 – 2013-04-04 19:09:07
@Resh你试过我的回答吗?如上所述,查询将自动传递。您不需要QSA标志,因为规则不会创建新的查询,只需使用传入的查询。另一方面,在正则表达式中有'^(。*)/ welcome..',但URL目录结构只有一个级别。除非请求不符合描述,否则这是错误的。只需将我的答案中的代码复制并粘贴到.htaccess文件中,然后试一试。 – 2013-04-04 19:19:36