【问题标题】:How can I prevent the query string from getting trailed to the end of the URL with htaccess?如何使用 htaccess 防止查询字符串被拖到 URL 的末尾?
【发布时间】:2016-04-03 22:05:31
【问题描述】:

我有以下 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=pageA&var2=&var3=

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

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    只需添加另一个仅匹配 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]
    

    【讨论】:

    • 比我想象的要简单..谢谢
    猜你喜欢
    • 2012-12-13
    • 2018-07-17
    • 1970-01-01
    • 2015-02-10
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多