2016-04-03 47 views
1

我有下面的htaccess:如何防止使用htaccess将查询字符串拖到URL的末尾?

Options -Multiviews -Indexes +FollowSymLinks 
RewriteEngine On 
RewriteRule ^(pageA|pageB|pageC|pageD)(?:\/(\d+)\/?(.*))?$ 
      ./$1/?var1=$1&var2=$2&var3=$3 [NC,QSA,L] 

下面的网址,因为在文件夹层次结构正常工作,文件夹名称(pageA的,页面B ......),并且每个在其内具有一个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=pageA & VAR2 = & VAR3 =

如何防止查询字符串被拖尾到URL的末尾?

回答

2

只需添加另一个只匹配pageA/pageB等的重写规则,并将其重写为不带查询字符串的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] 
+0

比我想的更简单..吞噬 – KAD

相关问题