首先我不得不说我找到了很多修改情况的答案,但不是这个。
Apache 强制某些 URL 使用 HTTP,而所有其他 URL 使用 https。 希望获得以下方面的专业知识。感谢您抽出宝贵时间并对此表示感谢。
我们的生产环境中有 apache fronting tomcat,我们希望对除少数页面之外的所有传入内容启用 https,并希望帮助编写可靠的 apache 重写规则来执行此操作。 那就是
- 除某些页面(/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/