【问题标题】:www and https redirects not working as desiredwww 和 https 重定向无法按预期工作
【发布时间】:2018-03-28 11:27:51
【问题描述】:

我似乎无法让 myredirects 正常工作。我的目标是:

  1. http://example.com 重定向到https://www.example.com
  2. http://www.example.com 重定向到https://www.example.com

目标 1 已经实现,但问题是重定向 http://www.example.comhttps://www.example.com,实际上导致 404 错误。我使用Ryte 确定问题如下:

https://enmowe.com/ (403) is not reachable
http://enmowe.com/ (301) is forwarding to https://www.enmowe.com/ (200)
https://www.enmowe.com/ (200) is available
http://www.enmowe.com/ (404) is not reachable

我在我的 Apache VirtualHost 中尝试了以下操作:

方法一。

    <If "%{HTTP_HOST} != 'www.enmowe.com'">
        Redirect "/" "https://www.%{HTTP_HOST}/$1"
    </If>

    <If "%{SERVER_PROTOCOL} != 'HTTPS'">
        Redirect "/" "https://www.%{HTTP_HOST}/$1"
    </If>

方法二。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.\.enmowe\.com)?$
RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC]

方法3。

RewriteEngine on
RewriteCond %{SERVER_NAME} =enmowe.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

现在有点迷茫

【问题讨论】:

  • apache 是否有 www.enmowe.com 的虚拟主机条目,因为如果没有,则重写规则无法触发....
  • www.enmowe.com 已设置为虚拟主机中的 ServerAlias

标签: apache ssl redirect virtual-hosts


【解决方案1】:

如果协议不正确主机名,您想重定向。所以你应该制定这两个条件:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC]

RewriteCond %{HTTP_HOST} !^(www.\.enmowe\.com)?$
RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC]

https://enmowe.com 根本无法访问的事实与此无关。如果您希望它可以访问并且您拥有正确的证书,请将主机名作为 ServerAlias 添加到 https 服务器的定义中。

顺便说一句:请删除virtual-hosts 标签,因为它与您的问题无关。

【讨论】:

  • 谢谢,这只对部分有效。当它的enmowe... 或enmowe... 时,它将URL 设置为www。但是,enmowe... 仍然不会重定向到enmowe...
  • 这可能是由于我从您的问题中复制的正则表达式。我没有测试。开启rewrite debugging,看看第二个条件是否匹配。
  • 这是我在 enmowe.com.com 虚拟主机文件中的内容:RewriteEngine on RewriteCond %{HTTPS} !=on [OR] RewriteCond %{HTTP_HOST} !^(www.\.enmowe\.com)?$ RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 这是基于您的回答。但是,https://enmowe.com 似乎仍然没有被重定向。我还加了:RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} !^(www.\.enmowe\.com)?$ RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 真奇怪。我为www.enmowe.com 创建了一个虚拟主机。
  • 但是,正如我之前所说的,http://enmowe.comhttp://www.enmowe.com 正在根据需要重定向到 https://www.enmowe.com
猜你喜欢
  • 2014-05-10
  • 1970-01-01
  • 2012-01-16
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
相关资源
最近更新 更多