【问题标题】:Rewrite rule for httpd.conf and virtual host SSLhttpd.conf 和虚拟主机 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 指令中?我需要什么样的规则?

【问题讨论】:

    标签: apache .htaccess mod-rewrite virtualhost httpd.conf


    【解决方案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] 可能更简单。但这是吹毛求疵
    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2019-12-16
    • 2012-05-26
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多