我正在尝试使用htaccess重写规则来创建流畅的网址。因此,用户可以调用示例http://members.clubseat.at/demo/login/?test=123
,对于我的代码,它就像用户名为http://members.clubseat.at/demo/index.php?page=login&test=123
。
这是我的htaccess代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*/)?([^/]*)/?$ ./index.php?p1=$1&p2=$2 [QSA,L]
我希望用户可以在页面之后留下额外的参数以及最后一个斜杠,这样.../demo/login/
和.../demo/login
也可以正常工作。但如果没有最后一个斜杠( / )login
不在第一个参数中,而在第二个参数中。
比较: http://members.clubseat.at/demo/login/ vs。 http://members.clubseat.at/demo/login
在此尝试演示:http://members.clubseat.at/demo/login/?test=123
但是根据正则表达式测试程序,它应该可以工作:https://regex101.com/r/nK9rM2/2
我该如何解决这个问题?
答案 0 :(得分:0)
您需要使用QSA标志将查询字符串附加到目标网址。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)?/?([^/]*)/?$ ./index.php?p1=$1&p2=$2 [QSA,L]
第三个烫发会自动附加QSA标志。