【问题标题】:RewriteCond and ending forward slashRewriteCond 和结束正斜杠
【发布时间】:2015-04-02 10:34:00
【问题描述】:

我试图让我的指令忽略 URL 中的结尾正斜杠,即使它存在。

此代码有效

RewriteCond %{REQUEST_URI}  ^/category1/category2/category3/$ [NC]
RewriteCond %{QUERY_STRING} ^recipient=For\+Boys(.*)$ [NC] 
RewriteRule ^(.*)$ /newcategory/for-boys/? [NC,L,R=301]

所以一个起始 URL 如:

http://www.foo.com/category1/category2/category3/?recipient=For+Boys

重定向到

http://www.foo.com/newcategory/for-boys/

问题

但是,当起始 URL 为:

http://www.foo.com/category1/category2/category3?recipient=For+Boys 

注意category3?recipient=For+Boys之间缺少的正斜杠

如果有或没有结束正斜杠,我应该在第一个 RewriteCond 中输入什么以使重定向工作?

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    知道了:

    .htaccess regular expression need to make trailing forward slash optional

    只要放 /?在模式末尾的 $ 之前:

    所以我新的第一个 RewriteCond 是

    RewriteCond %{REQUEST_URI}  ^/category1/category2/category3/?$ [NC]
    

    【讨论】:

    • 正确。 “?”表示以 1 或 0 匹配前面的字符。
    • 但是你不需要你引用的东西。只需添加“?”到你原来的第一行。
    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多