【问题标题】:How to redirect all traffic to https but a specific folder?如何将所有流量重定向到 https 但特定文件夹?
【发布时间】:2017-09-05 14:00:22
【问题描述】:

这就是我现在用来将所有流量重定向到 https 的方法:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我想要此配置,但排除一个特定文件夹。我这样做的原因是我在当前主机帐户上安装了一个附加域,虽然主域安装了 SSL 证书,但我最近添加的没有。

添加插件域会在主域的根文件夹内创建一个文件夹,并且因为我通过 htaccess 配置重定向所有流量,它还尝试访问新插件域的 https 版本。

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    您可以使用RewriteCond 排除文件夹:

    RewriteEngine On
    
    RewriteCond %{HTTPS} off
    RewriteCond  %{THE_REQUEST} !/someFolder/ [NC]
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    

    【讨论】:

    • 我看到了具有不同参数的几乎相同的解决方案:[R,L] [L,R=301] 和 [L,R=301,NE]。据我所知,所有工作都一样。有什么区别吗?
    • R 表示仅以302 状态重定向(临时重定向)。 301 是永久重定向,应该使用它。 NE 用于不转义,强烈推荐在 URL 包含特殊字符时使用重定向保护。
    • 非常感谢您的澄清。我会用这个答案奖励 Kev,因为他是第一个并且得到的分数更少 - 让我们给 Kev 一个机会!再次感谢
    • 当然,您有权选择任何您认为对您有好处的答案,但是我会纠正这样一个事实,即我的答案是第一个出现的,而 Kev 是最后一个发布答案的。
    • 哦,我不知道,会记住这一点。在那种情况下,我会奖励你的答案,因为你是第一个回答的人。祝你有美好的一天!
    【解决方案2】:

    您需要在其中添加一个条件,因此请改用它:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/foldername
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    在测试之前清除缓存。

    【讨论】:

    • 感谢您的解决方案,我会像 Kev 首先回答的那样正确。
    • 实际上,他是最后一个哈哈 xD....@Anubhava 是第一个 :P 但不用担心,很高兴你得到了你需要的答案。
    【解决方案3】:

    如果我正确阅读了您的问题,您希望将访问您网站的所有流量重定向到 https://,单个文件夹除外,对吧?

    如果是这样的话,这应该可行:

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteCond %{REQUEST_URI} !^/<folder-name>/
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}  [R,L]
    

    只需替换为您要排除的文件夹的名称即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-19
      • 2014-08-23
      • 2013-01-06
      • 2014-04-27
      • 1970-01-01
      • 2017-08-13
      • 2015-04-12
      • 2011-03-15
      相关资源
      最近更新 更多