将整个站点从http重定向到https,除了一个带有查询参数的路由



我读过一些关于将整个网站从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。

请确保在测试更改之前清除浏览器缓存。

相关内容

  • 没有找到相关文章

最新更新