apache服务器实现不带www的跳转到带www的域名效果

编辑:管理员 发布时间:2022-04-17 18:40:011800

在我们浏览网页时会发现,好多网页在浏览器地址栏中显示的的网站地址,带www前缀的二级域名以及不带www开头一级域名都可以直接访问,但在我们输入不带www的前缀的网址时,浏览器会自动跳转到带www的二级域名中去,这样是怎样实现的呢?

在apache2.4作为web服务器时,一般我们会在配置文件中为站点绑定两个域名.


配置如下:

<VirtualHost *:80>

DocumentRoot "C:/www"

ServerName www.xxxxx.xxx

ServerAlias xxxxx.xxx

<Directory "C:/www">

Options FollowSymLinks Includes

AllowOverride All

Require all granted

</Directory>

</VirtualHost>


那么这样设置后,当我们访问自己配置的站点时,带www与不带的都可以访问了,但是却没有跳转,那么又该怎样设置呢?

首先我们可以开启Mod_Rewrite重写规则模块,它可以分析正则表达式来重写url的请求.

我们只需要在修改apache服务器conf目录下的httpd.conf配置文件。

将LoadModule rewrite_module modules/mod_rewrite.so前面的#号去掉后保存重启服务器即可.

然后在用记事本新建一个空白文本,然后另存为保存类型为所有文件,设置名称为.htaccess,需要注意的是它没有文件的名称,只有后缀.htaccess.


然后右键打开方式选择记事本为其添加以下代码:

<IfModule mod_rewrite.c>

Options +FollowSymlinks -Multiviews

RewriteEngine On

rewriteCond %{http_host} ^.xxx.xxx [NC]

rewriteRule ^(.*)$ https://www.xxx.xxx/$1 [R=301,L]

</IfModule>


然后将其保存,将.htaccess文件放在需要不带www跳转到带www的网站根目录中去即可生效.

在一些服务器配置中如果没有设置Options +FollowSymlinks可能会出现500的错误.mod_rewrite需要有followsymlinks使重写规则生效.

-MultiViews表示禁用访问到目录中没有的对象时,服务器会找该目录中下的同名文件.

rewriteCond匹配正则 %{http_host} ^.xxx.xxx

nc不区分大小写

rewriteRule重写规则为 ^(.*)$ http://www.xxx.xxx/$1

R=301重定向为301跳转,可以通过网站状态查询工具查询到被重定向的原地址状态码为301.

l表示最后一些解析规则.

这样我们就实现里在apache2.4服务器环境中,没有顶级域名直接301状态跳转到二级带www的域名中去了.

TAGS: apache 服务器管理
热门文章
最新文章

热门标签

数学计算路径命令行表单字符符号nginxcookiejavapython数组文字处理小数服务器管理apache图片处理