添加 https 重定向例外(mod_rewrite)

添加 https 重定向例外(mod_rewrite)

我正在使用以下脚本将所有发送到 HTTP 的请求重定向到 HTTPS

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

我需要为该规则添加例外(针对特定页面),因为它正在加载位于没有 HTTPS 的服务器上的 JS。在 FF、Chrome 中,它可以正常工作。在 IE 中,它会显示令人讨厌的警告。

关于如何向现有的 mod_rewrite 代码添加规则有什么想法吗?

答案1

您可以添加第二个RewriteCond带有否定测试的测试(在模式前加上!)。它将与您现有的 进行 AND 运算RewriteCond

编辑:

例子:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI}  !^/pageregex
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

pageregex描述您想要例外处理的页面的某个正则表达式在哪里。请注意,正则表达式可以只是一个唯一标识特定页面的固定字符串。

答案2

如果您已正确安装和配置 mod_proxy,您也可以通过 https 提供该 .js 文件。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI}  !^/pageregex
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}    [C]
RewriteRule ^/home/to/js/file.js   http://example.com/home/to/js/file.js  [P]

[C] 标志允许执行以下规则,就像它是第一个重写规则的一部分一样。[P] 标志告诉 mod_rewrite 使用 mod_proxy 获取指定的 .js 文件并以透明方式提供该文件。这可能会使 IE 停止发出“同一页面上有安全和不安全的内容,您要继续吗?”的警告,因为 .js 文件将以安全方式提供。

相关内容