我读过一些关于将整个网站从http重定向到https的问题,像这样改变。htaccess:
# Rewrite http://www.example.com to https://www.example.com
#
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
它工作得很好,但我需要从这个重定向中排除一个路由,我已经找到了静态url的例子,但是当url有查询参数时,我没有找到规则(RewriteCond)。我希望自定义路由只能通过http访问。该路由需要一些必须存在的查询参数,其他的是可选的。东西:
http://<mydomain>/dataregister?device=id1234&val1=20&val2=30&hash=12345689
我想我应该添加另一个RewriteCond来排除这个路由,但我不确定如何做到这一点。我试过这个,但它不工作:
RewriteCond %{THE_REQUEST} != /dataregister [NC]
像这样:
RewriteCond %{THE_REQUEST} !/dataregister/?? [NC]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
模式/dataregister/??
将匹配包含/dataregister/?
或/dataregister?
的原始URL。
请确保在测试更改之前清除浏览器缓存。