我希望我的网络服务器将所有http请求重定向到https。 所以我设置了我的.htaccess
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
重定向似乎有效,但是当我输入_http://example.com/test/时,它会重定向到_https://example.com/httpdocs/test/,这会产生404错误。 如果我直接去_https://example.com/test/,一切正常!
答案 0 :(得分:2)
使用HTTP_HOST
,而不是SERVER_NAME
:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
请参阅https://serverfault.com/questions/570288/is-it-bad-to-redirect-http-to-https
另外,请确保您没有其他与此规则冲突的规则。您可能希望将此推广作为第一个规则(假设它具有L
标志)。
答案 1 :(得分:0)
感谢Simone, 你的解决方案对我没用。
我找到了
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
适合我。