将所有流量重定向到www https

时间:2013-01-23 11:47:08

标签: apache tomcat redirect https

我的应用程序在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]

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

感谢。

2 个答案:

答案 0 :(得分:4)

我有一个网站,我希望所有进入虚拟主机的流量都转到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虚拟主机定义(减少端口重写部分)。

答案 1 :(得分:0)

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

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

关键部分是S

中的%{HTTPS_HOST}

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