MENU

去WWW记

文章来源:原创

看到大佬们的域名越弄越短,连原来我1996年初识互联网(“World Wide Web”,简称3W)时的标志性特征,即域名中的“www”也要连根拔掉了,心里一直痒痒,终于狠下心来试了试。

一、首先解决一个历史遗留问题

换域名+301跳转这篇文章中我的.htaccess文件中设置的老域名(ireadfree.com)跳转到新域名(flypig.xyz)时一直有个问题,就是跳转后地址样一直是这样的:https://www.flypig.xyz/htdocs/blog,一直多一个/htdocs/blog目录,导致出现404错误,遍寻各位大佬都没找到解决方法(可能是大佬们感觉太简单,懒得回答了),今天我突然感觉可能是.htaccess文件放的位置不对,原来我是放在Apache目录下,实际上应该是放在www项目的目录下,移动后,果然问题解决。

蓝瘦,香菇!

另外,顺带说一个另一种老域名跳新域名的方法,即在DNS端进行设置,如下图:

在这两个地方修改DNS解析记录,即选显性URL,记录值填你的新域名;然后再加一条@记录,保证www.ireadfree.com和ireadfree.com都能跳转,设置完成后是这样的,如下图:

二、修改.htaccess文件

把.htaccess文件放对位置后(废话!自己乱放怪谁),在文件中加入如下代码:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteBase /
 RewriteCond %{SERVER_PORT} !^443$
 RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>

即可,当然还有其他方法,在这里不说了,大家自行google

顺便说一下强制非WWW域名的301跳转
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^flypig.xyz$ [NC]
RewriteRule ^(.*)$ https://flypig.xyz/$1 [L,R=301]
</IfModule>

三、继续修改DNS设置

比照上面,修改flypig.xyz的DNS配置,加入一条@记录和*的泛域名解析记录,如下图:

最后结果是:

四、修改httpd.conf文件

#
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All  #把这里的None改成All,

如果不修改则.htaccess文件不生效,我在这里走了很多弯路,一直奇怪为什么不管用,修改后就可以了。

五、其它相关修改

最后别忘了将httpd-ssl.confhttpd-vhosts.conf和Mirages主题中相关涉及www的设置一并修改掉。

比如,httpd-ssl.conf中涉及到的证书名称,可能你像我一样,当然给证书起名时就带着“wwww”了,如果不改掉Apache服务无法是启动的。如下:

SSLCertificateFile "${SRVROOT}/conf/cer/flypig.xyz_public.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/cer/flypig.xyz.key"

另外又如,httpd-vhosts.conf中关于主机名的地方等等,如下:

<VirtualHost *:80>
    ServerAdmin flypig.xyz@outlook.com
    DocumentRoot "${SRVROOT}/htdocs/blog"
    ServerName flypig.xyz
    RewriteEngine on
    RewriteCond %{HTTPS}!=on
    RewriteRule ^(.*)?$ https://flypig.xyz$1 [R=301,L]
    ErrorLog "logs/dummy-host2.example.com-error.log"
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

还有Mirages主题设置中的这里:

现在好了,无论你在地址样里输入flypig.xyz,www.flypig.xyz,http://flypig.xyz,www.ireadfreee.com,ireadfree.com,都会跳转到https://flypig.xyz

Last Modified: August 7, 2021