【问题标题】:Redirect http to https except one directory将http重定向到https除了一个目录
【发布时间】:2016-11-02 13:58:09
【问题描述】:

我有一个问题,我尝试了所有选项。

我想将所有网站http重定向到https除了一个目录,这个目录是内网:

RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} ^\/(intranet)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} !^\/(intranet)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]

但现在所有网站都显示 http 并且它不会重定向到 https 。

你能帮帮我吗?

谢谢

【问题讨论】:

    标签: .htaccess yii


    【解决方案1】:

    由于负重写条件,您的规则将除 /intranet 之外的所有请求重定向回 http,请从第二条规则中删除 ! 字符。 试试看:

    RewriteEngine on
    RewriteCond %{HTTP:X-Forwarded-SSL} =on
    RewriteCond %{REQUEST_URI} !^/(intranet)
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
    
    
    RewriteCond %{HTTP:X-Forwarded-SSL} =on
    RewriteCond %{REQUEST_URI} ^/(intranet)
    RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
    

    或者你可以试试这个:

    RewriteEngine on
    RewriteCond %{REQUEST_SCHEME} =http
    RewriteCond %{REQUEST_URI} !^/(intranet)
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
    
    
    RewriteCond %{REQUEST_SCHEME} =https
    RewriteCond %{REQUEST_URI} ^/(intranet)
    RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
    

    【讨论】:

    • 是的,但它不会重定向到https主页并在主页显示http
    • 是的,你可以在 www.naturaselection.com 看到,我需要这个主页重定向到naturaselection.com
    • 这很奇怪,现在这个链接 http://www.naturaselection.com/intranet/ 重定向到错误 404 我需要这个链接 dd https://www.naturaselection.com/intranet / 转化为这个 http://www.naturaselection.com/intranet/
    【解决方案2】:

    像这样只使用一次规则,

    RewriteCond %{REQUEST_URI} !^intranet
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
    

    【讨论】:

      猜你喜欢
      • 2012-04-02
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      相关资源
      最近更新 更多