https://保留域名和子域,但删除www

问题描述:

我一直在试图找到一种方法来保留我的域和子域上的https://,同时从URL中删除www.https://保留域名和子域,但删除www

例子:

URL 1: http://www.mywebsite.co.uk 
Redirect 1: https://mywebsite.co.uk 

URL 2: http://test.mywebsite.co.uk 
Redirect 2: https://test.mywebsite.co.uk 

URL 3: http://mywebsite.co.uk 
Redirect 3: https://mywebsite.co.uk 

URL 4: http://www.test.mywebsite.co.uk 
Redirect 4: https://test.mywebsite.co.uk 

我也碰到过多次尝试,试图打击堆栈溢出这个问题,并收到打扰Apache和PHP脚本到我的网站来解决,但他们似乎总是要来还有其他问题。

当前.htaccess文件:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^(.+\.)?mywebsite\.co\.uk$ 
RewriteRule ^(.*)$ https://%1mywebsite.co.uk/$1 [R,L] 

虽然这是帮助我的保留在我的子域SSL,我仍然可以通过在URL前面加上www.访问我的主域和子域。这不是我想要的效果。

您可以使用此单一的规则:

RewriteEngine On 

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

记住测试这种变化之前,清除浏览器缓存。

+0

这仍然允许www。并且因为我现在重写了上面的规则,现在它将www.mywebsite.com/dashboard/重定向到https://mywebsite.com/index.php?page=dashboard,它使用AngularJS崩溃了我的单页应用程序。 –

+0

这必须作为'RewriteEngine'行下面的第一条规则放置,并且您必须清除浏览器缓存。还要确保没有其他规则/代码在子域上强制使用“www”。 – anubhava