当一个请求从不安全的http://进入我的网站时,我希望它被重定向到https://。
我的根目录中包含html和php文件。根据请求路径,我将决定是否提供HTML或PHP文件。
以下是我现有的.htaccess文件。
RewriteEngine On
RewriteRule "^(news_[^.]+|faq|terms|get).*" "$1.php" [NC,L]
上述配置适用于从安全域和不安全域提供文件。
但是当我尝试通过更改上述配置来强制SSL时
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTPS} !=on
# # Redirect to https version
RewriteRule ^get$ "https://example.com/get.php" [L]
RewriteRule ^faq$ "https://example.com/faq.php" [L]
RewriteRule ^terms$ "https://example.com/terms.php" [L]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
它强制从目录提供的所有html页面使用SSL。但/ get,/ faq,/ terms正在获取请求超时。
我该如何解决?我在哪里做错了?
答案 0 :(得分:0)
RewriteEngine On
### WWW & HTTPS# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
### WWW & HTTPS
这应该这样做。编辑.htaccess以反映相同内容并将其放在root中。