【问题标题】:Htaccess rewrite url and remove part from urlHtaccess 重写 url 并从 url 中删除部分
【发布时间】:2017-03-31 10:47:06
【问题描述】:

您好,我正在尝试执行以下操作。

当通过 http 访问域时,它应该重定向到 https。 当域包含 www 时,它应该重定向到 https 当域包含语言缩写时,应将其删除。

可能的网址:

1:http://www.example.com/en/how-did-it-all-start

2:http://example.com/en/how-did-it-all-start

3:http://www.example.com/how-did-it-all-start

这些域应该通过一个 301 重定向重定向到 https://example.com/how-did-it-all-start

我尝试了很多东西,但是当我试图将它与 www 结合起来时,没有任何接缝可以工作。它现在只适用于 http url,当我将 www 添加到它时,它会中断。

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteCond %{REQUEST_URI} ^en/(.*)$ [NC]
RewriteRule ^ https://%1%/%2% [R=301,L]

我不知道如何在不破坏条件的情况下正确地结合这些条件。 尝试以不同的方式做,但直到现在都没有成功。 任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: .htaccess redirect mod-rewrite https


    【解决方案1】:

    您需要在条件中包含 [OR] 子句,并带有可选匹配项来处理所有 3 种情况:

    RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^(?:en/)?(.*)$ https://%1/$1 [R=301,L,NE]
    

    【讨论】:

    • 您好,感谢您抽出宝贵时间,但上述方法仍然无法正常工作,我得到了相同的结果,只是 http 请求被正确重定向。当我添加 www 时,它会中断。有什么提示吗?或者您可能需要更多信息?
    • 中断是什么意思?你清除浏览器缓存了吗?还要将此规则保留在RewriteEngine On 行的正下方。
    • 我已经独立测试了这条规则,它适用于所有 3 个条件。
    • 好的,那么也许还有其他问题! staka-roofaccesshatches.dev.100.nl/en/about-us/who-is-staka/… 这是我的开发 url,在这里它不起作用,但是当你使用非 www url 时它会起作用。
    • 好的,所以开发是个问题,因为没有配置 www。我还把它放在了现场机器上,它说它没有正确重定向,它处于无限循环中!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2013-09-11
    相关资源
    最近更新 更多