我的应用程序在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]
这样,前两个重定向工作正常,但第三个重定向没有。第三个可能吗?如果有,怎么样?
感谢。
答案 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}
你应该能够在你已经拥有的东西之后放置它。