我有一个SilverStripe网站,我希望始终使用www
域前缀并始终使用https
。
所以:
http://example.com
http://www.example.com
https://example.com
全部重定向到:
https://www.example.com
但是当我在/app/_config.php
中添加以下行时:
Director::forceWWW();
Director::forceSSL();
我得到一个重定向循环。如果我交换订单会发生同样的事情:
Director::forceSSL();
Director::forceWWW();
这是否意味着Director::forceWWW()
和Director::forceSSL()
无法一起使用?
我应该使用什么配置来获得理想的结果?
答案 0 :(得分:3)
我认为您是正确的forceWWW()
且forceSSL()
无法一起使用。
如果我们的网站位于Apache服务器上,我们可以将重定向规则添加到我们的根.htaccess
文件中,以执行以下两个重定向:
# ...
<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
RewriteEngine On
# Redirect non www to www
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# Redirect non https to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ...