在我的某个域名上我正在使用htaccess
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
将所有https重定向到http以及将www重定向到非www域。
现在,我希望secure.php页面使用https协议而不是http协议,同时将www重定向到非www。
我可以用下面的线来实现这个......
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/secure\.php [NC]
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/secure\.php [NC]
RewriteRule (.*) http://%{HTTP_HOST}/$1 [R=301,L]
在我的第一个htaccess中,如果用户访问https://www.example.com,则会在单个重定向中重定向到http://example.com。
修改安全的secure.php页面后,在第二个htaccess上考虑用户访问http://www.example.com/secure.php - >重定向到http://example.com/secure.php的情况 - >重定向到https://example.com/secure.php 在这里我得到两个重定向。
请建议我如何使用[OR]在我的第一个htaccess中标记我的标准,因此在所有情况下它都使用最多一个重定向来到达最终页面。
答案 0 :(得分:0)
尝试:
RewriteCond %{REQUEST_URI} !^/secure\.php
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(secure\.php.*) https://example.com/$1 [R=301,L]