Мне нужно получить 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
У меня есть следующее в моем файле vhost 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 в отдельный vhost:
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.com на www.abc.com и можете настроить этот виртуальный хост как обычно, без каких-либо перезаписей.
<VirtualHost *:80>
ServerName www.abc.com
Redirect permanent / https://www.abc.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.abc.com
...
....
</VirtualHost>