Director :: forceWWW()和Director :: forceSSL()可以在SilverStripe中一起使用吗?

时间:2016-08-10 21:12:52

标签: https silverstripe

我有一个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()无法一起使用?

我应该使用什么配置来获得理想的结果?

1 个答案:

答案 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]

    # ...