我需要得到mod_rewrite来做到以下几点
http://abc.com -> https://www.abc.com https://abc.com/login -> https://www.abc.com/login http://www.abc.com?x=3 -> https://www.abc.com?x=3 https://abc.com/login?x=1 -> https://www.abc.com/login?x=1 http://www.abc.com/login?x=3 -> https://www.abc.com/login
我有以下,在我的abc.com.conf虚拟主机文件,但它不能正常工作
<VirtualHost *:80> ServerName abc.com ServerAlias www.abc.com RewriteCond %{HTTP_HOST} ^abc\.com RewriteRule ^(.*)$ https://www.abc.com/$1 [R=permanent,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.abc.com/%{REQUEST_URI} </VirtualHost> <VirtualHost *:443> ServerName abc.com ServerAlias www.abc.com RewriteCond %{HTTP_HOST} ^abc\.com RewriteRule ^(.*)$ https://www.abc.com/$1 [R=permanent,L] </VirtualHost>
其他人可以帮我吗?
[编辑澄清]
首先,它看起来像你想强制所有的ssl ..我会照顾你的*:80块第一:
<VirtualHost *:80> ServerName abc.com ServerAlias www.abc.com Redirect permanent / https://www.abc.com/ </VirtualHost>
然后做你的*:443 ..但是,你可以让它变得很容易,只需将abc.com拉出一个单独的虚拟主机:
NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName abc.com Redirect permanent / https://www.abc.com/ </VirtualHost> <VirtualHost *:443> ServerName abc.com Redirect permanent / https://www.abc.com/ .... ... # Note you need a wildcard cert.. I assue you have one already or are using self signed. </VirtualHost>
好吧,现在你把所有的abc.comredirect到www.abc.com,你可以照常设置这个虚拟主机而不用重写。
<VirtualHost *:80> ServerName www.abc.com Redirect permanent / https://www.abc.com/ </VirtualHost> <VirtualHost *:443> ServerName www.abc.com ... .... </VirtualHost>