【问题标题】:Apache2 redirect all but some pages back to http using vhostsApache2 使用 vhosts 将除某些页面之外的所有页面重定向回 http
【发布时间】:2011-09-01 23:35:47
【问题描述】:

我正在使用 Apache 2 的重写规则来使用虚拟主机将某些类型的页面重定向到 HTTPS。这些都是以mydomain.com/users 开头的任何内容。换句话说,所有与用户及其信息有关的页面都应该在 HTTPS 上。我想将所有其他页面重定向到 HTTP。

现在发生的情况是,当用户访问 /users 页面时,他会被很好地重定向到 HTTPS。但是当他离开/users 区域时,我无法将重定向返回到HTTP。

我需要规则和条件将任何不是/users/* 的内容重写为 HTTP。换句话说,请帮我填空:

RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} __blank__
RewriteRule __blank__ http://mydomain.com%{REQUEST_URI} [R=301,L]

在研究这一点时,我试图避免一些事情。我在/users 下需要一个通配符,因为我正在开发应用程序并且经常在用户下添加页面(它是一个 Rails 应用程序)。

我知道用正则表达式做 NOT 匹配并不容易。我在这里要做的就是让大部分站点在 HTTP 上运行,除了 HTTPS 上的 /users/* 页面。

另外,是的,我有一个有效的证书,是的,我已经验证了 Apache2 重写模块可以工作。我可以将所有 URL 重写为 HTTP 没问题。如何不重写 REQUEST_URI 中以 /users 开头的那些?到目前为止,我想我实际上已经尝试过这个网站上的每一个答案......

【问题讨论】:

    标签: https apache2 rewrite


    【解决方案1】:

    这类问题有很多答案,你只需要稍微搜索一下这个网站。是的,他们不会立即 100% 回答您的问题(因为每个人的要求略有不同——比如不同的页面名称等),但整个方法是相同的。

    无论如何——这里是如何做到的:

    Options +FollowSymLinks -MultiViews
    RewriteEngine On
    RewriteBase /
    
    # don't do anything for images/css/js (leave protocol as is)
    RewriteRule \.(gif|jpe?g|png|css|js)$ - [NC,L]
    
    # force https for /users/*
    RewriteCond %{HTTPS} =off
    RewriteRule ^/users/ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    # force http for all other URLs
    RewriteCond %{HTTPS} =on
    RewriteCond %{REQUEST_URI} !^/users/
    RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    # your other rewrite rules below
    
    1. 这些规则需要在任何其他重写规则(如果存在)之前放置在 VirtualHost 指令中。 如果放置在其他地方可能需要进行一些小的调整。

    2. 他们会

      • /users/ 中的所有资源强制使用HTTPS,
      • 对图像、css 样式和 JavaScript 文件(准确地说,对于具有这些扩展名的文件)不执行任何操作
      • 并将强制所有其他 URL 使用 HTTP

    重要提示:这些规则很可能不会立即适用于您。那是因为现代浏览器会根据您之前的尝试执行 CACHE 301 重定向。因此,我建议在另一个浏览器上进行测试,并在测试期间将 301 更改为 302(302 未缓存).. 或清除所有浏览器缓存(甚至可能是历史记录)并重新启动浏览器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2014-03-19
      相关资源
      最近更新 更多