【问题标题】:Force trailing slash with rewritecond and rewriterule使用 rewritecond 和 rewriterule 强制斜杠
【发布时间】:2015-03-27 00:07:24
【问题描述】:

我这里有 4 行代码,前两行由于某种原因强制使用斜杠(因此,如果您访问 login,它会将您发送到 login/,但为什么后两行不呢?我想要它所以如果我去game/mmo,那么它会强制他们去game/mmo/

什么代码在前 2 行强制使用斜杠?

RewriteCond %{THE_REQUEST} /(register|login|recover)(?:\.php)?[\s?] [NC]
RewriteRule ^ /%1/ [R=301,L,NE]

RewriteCond %{THE_REQUEST} \s/+(game)\.php\?game=([a-z0-9]+) [NC]
RewriteRule ^ /%1/%2/ [R=301,L,NE]

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    第二个只匹配看起来像这样的请求:

    /game.php?game=mmo
    

    不是

    /game/mmo
    

    你需要一个不同的规则:

    RewriteRule ^game/(.*[^/])$ /game/$1/ [L,R=301]
    

    【讨论】:

    • 你介意和我聊聊吗?我对此有疑问。
    • @invidious 抱歉,不在我的电脑上。第一条规则有一个正则表达式匹配registerloginrecover,带有可选的.php 扩展名,然后是一个空格。这意味着它匹配看起来像/register/login/recover 的请求。没有尾随斜杠,没有扩展名。这就是它起作用的原因。第二个正则表达式只匹配具有查询字符串game= 的请求,这就是它不起作用的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2015-09-20
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多