好的,我有这个代码:
RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} ^/borrowing/ill/request\.php$ RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
我期望这个工作的方式是:
它实际工作的方式是:
等等。
我知道第二个条件(匹配的文件名)正在工作,因为redirect循环只是命中特定页面。 问题是,为什么不切换到HTTPS导致第一个条件不匹配?
编辑:
我将完全相同的.htaccess规则放到另一台服务器的testing区域 – 相同的文件和path信息。 他们工作得很好 。 其他地方的服务器configuration有问题。
事实certificate,上面的代码没有任何问题。 问题是我正在执行的服务器正在与只在端口80上通信的负载均衡器通信。
因此,HTTPS请求进入端口443,命中负载平衡器,将其redirect到端口80.然后,Web服务器将其redirect到443,redirect到80到443到80到443。
所以,解决的办法是把它报告给维护负载平衡器的人,希望他们能弄明白。
无论如何,感谢您的帮助,你们都非常耐心。
如果目标域是已知的,试试这个:
RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} ^/borrowing/ill/request\.php$ RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]