用于平滑网址的htaccess规则分隔符和参数

时间:2016-01-27 12:40:00

标签: regex .htaccess mod-rewrite

我正在尝试使用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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要使用QSA标志将查询字符串附加到目标网址。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]*)?/?([^/]*)/?$ ./index.php?p1=$1&p2=$2 [QSA,L]

第三个烫发会自动附加QSA标志。