我有以下htaccess:
Options -Multiviews -Indexes +FollowSymLinks
RewriteEngine On
RewriteRule ^(pageA|pageB|pageC|pageD)(?:'/('d+)'/?(.*))?$
./$1/?var1=$1&var2=$2&var3=$3 [NC,QSA,L]
以下URL工作正常,因为在文件夹层次结构中,文件夹名称为(pageA,pageB….),每个文件夹中都有一个index.php
文件,并且正在处理URL中传递的id以查看页面上的正确内容:
www.domain.com/pageA/
www.domain.com/pageA/12/title of item-number-12
当我只访问文件夹名称并删除尾部斜杠时,就会出现问题:
www.domain.com/pageA
请求的页面正确加载,但查询字符串将附加到url,如下所示:
www.domain.com/pageA/?var1=页面A&var2=&var3=
如何防止查询字符串拖到URL末尾
只需添加另一个只匹配pageA/pageB等的重写规则,并将其重写到不包含querystring的URL。所以你最终会得到这样的东西:
Options -Multiviews -Indexes +FollowSymLinks
RewriteEngine On
RewriteRule ^(pageA|pageB|pageC|pageD)$ ./$1/ [L]
RewriteRule ^(pageA|pageB|pageC|pageD)(?:'/('d+)'/?(.*))?$
./$1/?var1=$1&var2=$2&var3=$3 [NC,QSA,L]