【问题标题】:.htaccess Redirect 301 any subdirectory to a different url from main path.htaccess 将 301 任何子目录重定向到与主路径不同的 url
【发布时间】:2013-07-01 19:41:40
【问题描述】:

我不是正则表达式专家,我在看似简单的任务上失败了:

我需要像这样 301 重定向网址:

/en/example/ www.example.com/hello-world/

/en/example/ANYTHING www.example.com/foobar/

我能想到的唯一方法就是这样

/en/example/(.+) www.example.com/foobar/

但这会覆盖另一条规则,我无法将“/en/example/”重定向到单独的 url。

【问题讨论】:

    标签: regex .htaccess redirect


    【解决方案1】:

    为此,您需要有 2 条单独的规则。首先是具体的,然后是一般的。

    RewriteRule ^en/example/?$ /hello-world/ [L,NC]
    
    RewriteRule ^en/example/(.+?)/?$ /foobar/ [L,NC]
    

    【讨论】:

    • anubhava,因为我正处于使用正则表达式的第一步,我可以问你为什么在第一个重写规则中你放了问号?我知道问号跟随可选匹配,但该字符串必须存在,不是可选的!
    • 我当然可以回答。在第一条规则中,我将? 放在/ 前面以使其可选。这意味着上述规则将同时匹配 /en/example//en/example
    • 也许我现在明白了:问号仅指前面的单个字符。如果我想让整个部分成为可选部分,我必须使用圆括号,如下所示:^(en/example/)?$ 对吗?
    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2014-11-26
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多