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]
记住测试这种变化之前,清除浏览器缓存。
这仍然允许www。并且因为我现在重写了上面的规则,现在它将www.mywebsite.com/dashboard/重定向到https://mywebsite.com/index.php?page=dashboard,它使用AngularJS崩溃了我的单页应用程序。 –
这必须作为'RewriteEngine'行下面的第一条规则放置,并且您必须清除浏览器缓存。还要确保没有其他规则/代码在子域上强制使用“www”。 – anubhava