在.htaccess
我有这段代码强制所有内容都使用HTTPS:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
但我想允许来自
的流量http://www.example.com/video/*
如果需要,保持HTTP并从HTTPS重定向到HTTP。
答案 0 :(得分:2)
要阻止/video/<whatever>
重定向到HTTPS,您可以修改现有的RewriteRule
模式以排除此类网址。例如:
RewriteRule !^video/ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
这将匹配除以外的任何网址<{1}}。 (/video/
前缀否定了正则表达式。)
...如果需要,可以从HTTPS重定向到HTTP。
为此,请添加其他规则。例如:
!
对RewriteCond %{HTTP:X-Forwarded-Proto} https [OR]
RewriteCond %{HTTPS} on
RewriteRule ^video/ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
的检查意味着你在代理服务器后面? (但是检查X-Forwarded-Proto
看起来像是一个通用的复制/粘贴解决方案?)如果你不在代理之后,那么应该删除那个条件,因为该标题可能是伪造的。 (?)
请注意,使用302(临时)重定向 test 会很有用,以避免浏览器缓存错误的重定向。 (或者在禁用浏览器缓存的情况下进行测试。)