【发布时间】:2015-09-30 21:39:24
【问题描述】:
我正在为三个不同域名提供服务的服务器上修复我的 Apache (2.4.12) 配置文件。我对每个站点都有不同的配置文件。我一生都无法弄清楚如何完成以下两项:
- 将所有
http请求重定向到https,保持请求的其余部分(子域/主机和文档路径)完全相同 - 将所有
www请求重定向到非www
我已经读过,如果我只有一个 *:80 VirtualHost 并将重写规则放在那里,这可以一步完成(我的其余子域都是 *:443 VirtualHosts,www 除外) ,但我不知道该怎么做。这些关于 SO 的答案不起作用:
-
this question 中接受的答案不正确(仅
https重定向) -
This answer 对我不起作用——只有
https重定向起作用。 - This question 不处理通配符子域,因此不适用。
- This question 也不适用,因为它不处理子域。
编辑:这是我在下面的 mike.k's answer 的 cmets 中引用的代码。
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^(.*)$ https://example.com/$1 [R=permanent,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://example.com%{REQUEST_URI}
</VirtualHost>
【问题讨论】:
标签: apache mod-rewrite redirect