httpd.conf 和虚拟主机 SSL 的重写规则
Posted
技术标签:
【中文标题】httpd.conf 和虚拟主机 SSL 的重写规则【英文标题】:Rewrite rule for httpd.conf and virtual host SSL 【发布时间】:2012-05-16 11:36:21 【问题描述】:我在 httpd.conf 中有两台虚拟主机,一台用于端口 443,一台用于端口 80:
<VirtualHost IPADDRESS:80>
</VirtualHost>
<VirtualHost IPADDRESS:443>
</VirtualHost>
现在我想将每个请求重定向到我的服务器以转到https://www.mysite.com/
除了http://www.mysite.com/blog/
我希望博客不是 SSL。我应该将 RewriteRules 放在哪个 virtualHost 指令中?我需要什么样的规则?
【问题讨论】:
【参考方案1】:在端口 80 的 VirtualHost 中,一条规则会将博客以外的所有内容重写为 SSL。在443主机中,它会将博客请求重写为非ssl(如果你想强制它们回到非ssl)
<VirtualHost IPADDRESS:80>
RewriteEngine On
# Rewrite everything except the blog to SSL
RewriteCond %REQUEST_URI !^/blog
RewriteRule (.*) https://www.example.com/$1 [L,R,QSA]
</VirtualHost>
<VirtualHost IPADDRESS:443>
RewriteEngine On
# Rewrite the blog back to plain http
# Leave this out if you don't care that https requests to the blog stay
# on ssl
RewriteRule ^(blog*) http://www.example.com/$1 [L,R,QSA]
</VirtualHost>
【讨论】:
在您的 443 配置中,RewriteRule ^(/blog/.*) http://www.example.com$1 [L,R,QSA]
可能更简单。但这是吹毛求疵以上是关于httpd.conf 和虚拟主机 SSL 的重写规则的主要内容,如果未能解决你的问题,请参考以下文章
Plesk:通过 vhost_ssl.conf 覆盖 httpd.conf SSLCertificateFile?