【问题标题】:Redirecting all traffic to www https将所有流量重定向到 www https
【发布时间】:2013-01-06 21:19:30
【问题描述】:

我的应用程序在 Ubuntu 上托管的 Apache 上运行,我希望以下重新指导能够正常工作:

1> http://example.com       -> https://www.example.com
2> http://www.example.com   -> https://www.example.com
3> https://example.com      -> https://www.example.com

我在我的默认 apache 配置文件中使用以下几行:

RewriteEngine on
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/?(.*)         https://www.example.com/$1 [L,R]

这样,前两个重定向工作正常,但第三个没有。第三种可能吗?如果是的话怎么办?

谢谢。

【问题讨论】:

标签: apache tomcat redirect https


【解决方案1】:

我有一个站点,我希望所有进入虚拟主机的流量都转到端口 443。我为端口 80 重定向设置了虚拟主机定义,如下所示:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)         https://www.example.com/$1 [L,R]

这会将进入端口 80 的所有流量重定向到 443。

确保您的 ServerName 和 ServerAlias 设置正确。在这个例子中,你会得到类似的东西:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias *.example.* example.* example.com

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} ^TRACE
        RewriteRule .* - [F]
        RewriteCond %{REQUEST_METHOD} ^TRACK
        RewriteRule .* - [F]

        #redirect all port 80 traffic to 443
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/?(.*) https://www.example.com/$1 [L,R]
    </IfModule>

</VirtualHost>

在此之后,您还将设置一个 443 虚拟主机定义(减去端口重写部分)。

【讨论】:

【解决方案2】:

我知道这已经有一段时间了,但我想你可能正在寻找这样的东西:

RewriteCond %{HTTPS_HOST}   !^$
RewriteRule ^/?(.*)         https://www.mysite.com/$1 [L,R]

关键部分是%{HTTPS_HOST}中的S

你应该能够把它放在你已经拥有的东西之后。

【讨论】:

    猜你喜欢
    • 2020-05-16
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2019-05-23
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多