htaccess 强制 https 并将 www 重定向到非 www,但没有其他子域

regex

1个回答

写回答

Lusifar

2025-07-09 16:45

+ 关注

合同
合同

使用.htaccess文件可以轻松地对网站进行重定向和强制HTTPS。 通过.htaccess文件,您可以实现将访问您的网站的所有HTTP请求重定向到HTTPS,并将www重定向到非www的功能,从而实现网站的安全和一致性。

在.htaccess文件中,您可以使用RewriteEngine指令来启用URL重写功能。使用RewriteCond指令可以添加条件,以便仅对满足特定条件的请求进行重定向。最后,使用RewriteRule指令来定义重定向规则。

首先,让我们来看一个例子,演示如何将HTTP请求重定向到HTTPS。请注意,以下示例假设您的网站已经配置了有效的SSL证书。

强制HTTPS:

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

在上述示例中,我们首先启用了RewriteEngine。然后,使用RewriteCond指令检查当前请求是否不是通过HTTPS进行的。如果条件为真,则使用RewriteRule指令将请求重定向到相同的URL,但是使用HTTPS协议。 [L,R=301]表示该重定向是永久性的,并且希望浏览器缓存该重定向。

接下来,让我们看一个例子,演示如何将www重定向到非www。

将www重定向到非www:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

在上述示例中,我们使用RewriteCond指令检查当前请求的HTTP_HOST是否以"www."开头。如果是,则使用RewriteRule指令将请求重定向到相同的URL,但是去掉了"www."前缀。 %1表示RewriteCond中捕获的分组(即去掉了"www."前缀的部分)。

综合示例:

现在,让我们将这两个重定向规则结合同时强制HTTPS并将www重定向到非www。

RewriteEngine On

# 强制HTTPS

RewriteCond %{HTTPS} !=on

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 将www重定向到非www

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

在上述示例中,我们首先启用了RewriteEngine。然后,我们添加了强制HTTPS的重定向规则。接下来,我们添加了将www重定向到非www的重定向规则。通过这两个规则的组合,我们可以同时实现将HTTP重定向到HTTPS并将www重定向到非www。

:

通过使用.htaccess文件,您可以轻松地实现将HTTP请求重定向到HTTPS,并将www重定向到非www。这有助于提高网站的安全性和一致性,并为用户提供更好的体验。只需将上述示例代码添加到您的.htaccess文件中,您的网站就能够自动执行这些重定向规则。

记住,在应用任何重定向规则之前,请确保在服务器上正确配置了SSL证书,并测试重定向规则以确保其正常工作。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号