htaccess没有重定向到https

时间:2016-07-08 08:27:48

标签: php apache .htaccess redirect

我在htaccess中有以下代码

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /films/

RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/films/$1 [R=301,L]

我希望它自动将网址重定向到https 但它不是重定向。我试过改变

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/films/$1 [R=301,L]

RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/films/$1 [R=301,L]

2 个答案:

答案 0 :(得分:3)

要强制HTTPs,您可以使用:

RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

因此,在所有内容上都会留下https://。包括{REQUEST_URI}比指定目录更好。因为它将适用于所有目录。

正如我最近了解到的,最好将强制wwwhttps合并,尝试使用:

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [R=301,L,NE]

答案 1 :(得分:2)

要重定向到https,您可以在/films/.htaccess中使用以下重定向:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /films/
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/films/$1 [R=301,L,NE]

在测试此重定向之前清除浏览器缓存。