3

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

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

谢谢。

4

2 回答 2

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 虚拟主机定义(减去端口重写部分)。

于 2013-01-23T14:26:12.330 回答
0

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

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

关键部分S%{HTTPS_HOST}

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

于 2014-12-04T16:44:42.663 回答