在域和子域上保持https://但删除www

时间:2017-08-02 09:57:12

标签: apache .htaccess mod-rewrite

我一直试图找到一种方法在我的域名和子域名中保留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

我遇到过多次尝试在Stack Overflow上尝试解决这个问题,并且接受麻烦的Apache和PHP来编写脚本进入我的网站进行修复,但它们似乎总是带来其他问题。

当前.htaccess文件:

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

虽然这有助于我在子域名上保留SSL,但我仍然可以通过在网址上添加www.来访问我的主域名和子域名。这不是我想要的效果。

1 个答案:

答案 0 :(得分:1)

您可以使用此单一规则:

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]

请记住在测试此更改之前清除浏览器缓存。