【发布时间】:2017-06-08 13:12:23
【问题描述】:
在 Apache 2.4.6 中,我想将来自 http://A.org/foo 和 https://A.org/foo 的请求重定向到 https://B.org/foo。
我正在使用以下指令:
<VirtualHost 1.2.3.4:80>
ServerName B.org
ServerAlias A.org
RewriteEngine on
RewriteCond %{HTTP_HOST} !^B.org$
RewriteRule ^/(.*)$ https://B.org/$1 [R=permanent,L]
</VirtualHost>
<VirtualHost 1.2.3.4:443>
ServerName B.org
ServerAlias A.org
RewriteEngine on
RewriteCond %{SERVER_PORT} ^443(s)
RewriteCond %{HTTP_HOST} !^B.org$
RewriteRule ^/(.*)$ https://B.org/$1 [R=permanent,L]
</VirtualHost>
当我访问http://A.org/foo 时,它会重定向到https://B.org/foo(正确)。
当我访问 https://A.org/foo 时,这会加载 https://B.org/foo 但不会重写 URL。所以我从网络浏览器收到 SSL 证书域不匹配错误。
第二个VirtualHost 指令是否有问题会阻止 URL 被重写?
【问题讨论】:
-
注释掉
RewriteCond %{SERVER_PORT} ^443(s)这一行,清除浏览器缓存后重新测试。 -
我得到了同样的行为。
标签: apache .htaccess redirect ssl