【发布时间】:2024-01-13 08:24:01
【问题描述】:
我要重定向:
https://example.com => https://www.example.com [不工作]
http://example.com => https://www.example.com [不工作]
www.example.com => https://www.example.com [工作中]
example.com => https://www.example.com [工作中]
.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
虚拟主机
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/test/public_html
ErrorLog /var/www/test/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost _default_:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/test/public_html
ErrorLog /var/www/test/error.log
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/test.key
SSLCertificateFile /etc/apache2/ssl/test.crt
</VirtualHost>
【问题讨论】:
-
@anubhava:我在虚拟主机设置中使用相同的 documentroot。请查看更新后的问题。
-
@SeanBright:我也尝试了该解决方案。首先它重定向到 www,然后再次返回到非 www,在这种情况下得到
DNS_PROBE_FINISHED_NXDOMAIN错误。 -
你想用
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]实现什么? https 必须关闭或主机不以 www 开头并且必须包含任何字符? -
First it's redirecting to www and then again coming back to non-www:上面显示的规则中没有发生这种情况。您是否还有其他导致此问题的代码/规则?