我在纯域和www
子域上都安装了 SSL。它们也能正常工作。我需要将所有http
协议请求重定向到https
。以下是 apache 的配置:
<VirtualHost *:80>
ServerName lamtakam.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/myweb
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =lamtakam.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ServerName www.lamtakam.com
DocumentRoot /var/www/html/myweb
RewriteEngine on
RewriteCond %{SERVER_NAME} =lamtakam.com [OR]
RewriteCond %{SERVER_NAME} =www.lamtakam.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<Directory /var/www/html/myweb>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
知道如何进行重定向吗?目前,有些情况按预期工作,并且重定向会发生。唯一不会发生重定向的域是:
注意到这不起作用:(但不确定我是否将其正确放置在配置中)
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?lamtakam\.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]
答案1
这曾经有效,但是不建议甚至在 2010 年的某个时候也是如此。所以不要使用这个:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?lamtakam\.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]
这些都会被添加到.htaccess
。
您应该使用这个(来自同一个链接):
<VirtualHost *:80>
ServerName www.examples.com
Redirect / https://www.examples.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.examples.com
# ... SSL
</VirtualHost>