我有Drupal 7网站,默认为.htaccess文件。我需要将所有站点的可能性重定向到一个https站点。
我需要的是:
http://example.com -> https://example.com
http://www.example.com -> https://example.com
https://www.example.com -> https://example.com
我尝试了很多选项,但我仍然收到错误:“这个网页有一个重定向循环。”
默认.htaccess看起来像:
.htaccess
[编辑]我找到了解决方案:
删除www并退回https:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]<br>
RewriteRule ^ https%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
用于将非www重定向到https:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]
答案 0 :(得分:0)
也许有人对这些重定向感兴趣(对https和www。*):
http://example.com to https://www.example.com
和
http://www.example.com to https://www.example.com
htaccess的:
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
答案 1 :(得分:0)
您也可以尝试在settings.php中设置base_url设置。默认情况下,它已被注释掉,但是您可以取消注释它并使用所需的协议进行设置:
$base_url = 'https://'.$_SERVER['SERVER_NAME']; // NO trailing slash!
这为我节省了很多时间,特别是在尝试从代理服务器后面强制HTTPS并使用Drupal 7中的域访问模块时。我找到了解决方法here。