昨天晚上,对我的网站进行了一次 SEO 查询,发现根域名和 www 子域名都有收录,于是想让网站忽略掉根域名内容,只收录我的 www 子域名内容。

首先说一下我的网站平台:ubuntu 22.04 + apache2 + mysql + php 。

因为我之前已经在 conf 配置文件中将 http 重定向到了 https,想着直接在 conf 配置文件中再加一条判断及 URL 重定向,可不管怎么做,第一次重定向后,将其再用于第二次重定向时,就不能正确识别 http 头及域名了,总是是将他们作为网址后面的文件或目录来看待,最终重定向的 URL 就完全看不下去了。

百度搜索很多资料,发现都没有说过两条重定向的内容,多次尝试,还是失败。无奈,今天晚上,我只能退而求其次,通过在根目录中建立一个.htaccess 文件实现第二个重定向内容,勉强是达到了效果。

最终我的重定向文件是这样的:

conf 配置文件实现http到https重定向

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

.htaccess 实现根域名到www重定向

RewriteEngine on
RewriteCond   %{HTTP_HOST} !^www\.
RewriteRule   ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
要使 .htaccess 能生效,还需要在 /etc/apache2/apache2.conf 文件中网站根目录配置内容中的 AllowOverride None 修改为 AllowOverride all