4

我在 httpd.conf 中有两台虚拟主机,一台用于端口 443,一台用于端口 80:

<VirtualHost IPADDRESS:80>
</VirtualHost>

<VirtualHost IPADDRESS:443>
</VirtualHost>

现在我想将每个请求重定向到我的服务器去,https://www.mysite.com/除了http://www.mysite.com/blog/我希望博客是非 SSL 的。我应该将 RewriteRules 放在哪个 virtualHost 指令中?我需要什么样的规则?

4

1 回答 1

7

在端口 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>
于 2012-05-08T02:10:32.650 回答