我正在使用.htaccess在我的网站上制作几页安全 - /续订和/续订结果。我有一个脚本,用于从/更新用户的输入,将它们发送到异地以完成某些操作,然后它们应返回/更新结果。这可以在没有https重写规则的情况下工作,但是当我尝试实现规则时(见下文),而不是返回/更新结果,用户被重定向到/更新。
这是我的.htaccess文件的相关部分:
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^renew https://www.mydomain.com/renew [R,L]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^renew\-result https://www.mydomain.com/renew-result [R,L]
提前感谢您的任何帮助。
答案 0 :(得分:1)
问题是/renew-results
匹配以/renew
开头的网址(这是您的第一条规则)。有几种方法可以绕过这个问题' ..
首先(匹配的最长网址首先):
RewriteCond %{HTTPS} off
RewriteRule ^renew-result https://www.mydomain.com/renew-result [R,L]
RewriteCond %{HTTPS} off
RewriteRule ^renew https://www.mydomain.com/renew [R,L]
第二个(限制网址与最后的$
完全匹配)
RewriteCond %{HTTPS} off
RewriteRule ^renew$ https://www.mydomain.com/renew [R,L]
RewriteCond %{HTTPS} off
RewriteRule ^renew-result$ https://www.mydomain.com/renew-result [R,L]
第三,将两种情况组合在一个规则中。 ^renew(-result)?$
仅匹配/renew
或/renew-result
匹配-result
(如果请求中存在)。如果捕获呈现,https://www.mydomain.com/renew$1
会重定向到https版本的/renew
或/renew-result
。
RewriteCond %{HTTPS} off
RewriteRule ^renew(-result)?$ https://www.mydomain.com/renew$1 [R,L]
答案 1 :(得分:0)
通过测试,这与我的相似。
RewriteCond %{SERVER_PORT} 80
RewriteRule ^renew https://www.domain.com/renew [L,R=301]