如何使用htaccess强制重定向到安全域

时间:2018-01-12 00:34:48

标签: php apache .htaccess ssl redirect

当一个请求从不安全的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正在获取请求超时。

我该如何解决?我在哪里做错了?

1 个答案:

答案 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中。