regex - Apache 强制某些 URL 使用 HTTP,而所有其他 URL 使用 https

标签 regex apache mod-rewrite url-rewriting https

首先我不得不说我找到了很多修改情况的答案,但不是这个。

Apache 强制某些 URL 使用 HTTP,而所有其他 URL 使用 https。 希望获得以下方面的专业知识。感谢您抽出宝贵时间并对此表示感谢。

我们的生产环境中有 apache fronting tomcat,我们希望对除少数页面之外的所有传入内容启用 https,并希望帮助编写可靠的 apache 重写规则来执行此操作。 那就是

  1. 除某些页面(/abc、/def、/ghi)强制使用 http 外,所有传入连接均通过 https 进行。

任何帮助。我在 google  的帮助下想出了这个,但它不适用于 http。所有流量都转到 https

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/(/abc|/def|/ghi)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/(/abc|/def|/ghi)
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

最佳答案

您的条件中有太多斜杠,无法对照 %{REQUEST_URI} 进行检查。删除括号内的内容:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/(abc|def|ghi)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/(abc|def|ghi)
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

关于regex - Apache 强制某些 URL 使用 HTTP,而所有其他 URL 使用 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725545/

相关文章:

r - 使用 REGEX 在多个引号字符串中匹配和替换

Mavericks 的 PhpMyAdmin

php - 是否有可能在 302.htaccess RedirectMatch 之后获取原始 URL?

php - htaccess 带有语言和页面参数的重定向 url

.htaccess - 用 # 重写 url

regex - 必须释放创建的 System.RegularExpressions 对象的内存吗?

regex - Elixir 案例中的正则表达式

javascript - 使用正则表达式匹配 YouTube 播放列表网址,而不是匹配播放列表中的歌曲

php - 在网页上运行现有的 CLI 程序

apache - 如何在 Linux 服务器中使 URL 不区分大小写