哇哈哈

Apache 通过 .htaccess 文件强制使用 https 与 www 跳转到主域

Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器软件,可以在大多数电脑操作系统中运行,是最流行的 Web 服务器软件之一。Apache 快速、可靠并且可通过简单的 API 扩展,将 Perl、Python 等解释器编译到服务器中。

「Apache 通过 .htaccess 文件强制使用 https 与 www 跳转到主域:https://9987688.xyz/23」

如何通过 .htaccess 文件强制使用 https 与 www 跳转到主域?

Apache 如何通过 .htaccess 文件强制使用 https?以及将 www 跳转到主域(不带 www 的域名)?已经很久没有折腾过这个问题了,前阵子买了给便宜老薛香港主机,今天折腾又遇到这两个问题……

折腾很久,都没有成功,才发现,改动的文件没有上传到服务器……尴尬……下面先上代码:

「Apache 通过 .htaccess 文件强制使用 https 与 www 跳转到主域:https://9987688.xyz/23」
<IfModule ssl_nonwww>
RewriteCond %{SERVER_PORT} !^443$ [OR]
RewriteCond %{HTTP_HOST} www.uecc.eu.org [NC]
RewriteRule (.*) https://uecc.eu.org/$1 [L,R=301]
</IfModule>

将代码中 uecc.eu.org 换成实际使用域名,贴到 .htaccess 文件最前面保存即可。

其它代码

另外在折腾过程中看到一些代码也摘录过来备忘,有需要可以参考一下。

htaccess 重定向到 https 不影响子域名

规则识别访问的域名,如果不是主域则不进行重定向,代码如下:

「Apache 通过 .htaccess 文件强制使用 https 与 www 跳转到主域:https://9987688.xyz/23」
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} www.uxtt.com
RewriteRule ^.*$ https://www.uxtt.com%{REQUEST_URI} [L,R=301]

修改.htaccess 域名实现 www 与不带 www301 重定向跳转重写 URL

不带 www 的跳转至 www 域名:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^wp.com [NC]
RewriteRule ^(.*)$ http://www.wp.com/$1 [L,R=301]

带 www 的跳转至不带 www 域名:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^wp.com$ [NC]
RewriteRule ^(.*)$ http://wp.com/$1 [L,R=301]

注意:以上代码直接复制到.htaccess 文件,记得将本站域名 wp.com 改成实际使用域名。

「Apache 通过 .htaccess 文件强制使用 https 与 www 跳转到主域:https://9987688.xyz/23」

通过 .htaccess 设置重定向实现强制 https 访问

只需要将以下代码放到 .htaccess 文件中即可,如果 .htaccess 文件中已经有内容,请将重定向代码放在最前面。

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

以上规则会影响子域名,如果希望只有主域名使用 https,而子域名不使用,使用以下规则:

RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} !^www.wp.com
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

注意上面的规则中 wp.com 换成实际使用域名。

如果只想排除某个子域名,也就是只有某个子域名不使用 https,可以使用以下规则:

RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^https://wp.wp.com
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

注意上面规则中 wp.wp.com 换成实际使用域名。

退出移动版