apache 将不带www的域名定向到带www的域名

来自:互联网
时间:2019-08-07
阅读:

首先我们在apache中用这个域名建立了两个虚拟主机,一个带www,一个不带。

然后我们将带www的正确解析到对应的网站上面,然后我们将不带www的域名解析到主机目录下面的一个文件夹里面,然后我们在这个文件夹里面放了一个index.php,我们利用php代码来做这个301。

php代码如下:
--------------------------------
<?php

Header("HTTP/1.1 301 Moved Permanently");
Header("Location:http://www.xxx.com") // 你要定向的域名
?>

------------------------------------

这样当用户访问不带www的域名的时候,就会访问这个文件夹下面的index.php,php就会执行301,将域名跳转到带www的域名,这个跳转的时间非常短,用户感觉不出来的。

另外修改Apache配置文件也可以达到同样的效果:

在网站根目录新建.htaccess文件,输入下列内容(需要开启mod_rewrite):

1)将不带WWW的域名转向到带WWW的域名下:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^zyku.net [NC]
RewriteRule ^(.*)$ https://file.zyku.net/$1 [L,R=301]

2)重定向到新域名:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.bAIdu.com/$1 [L,R=301]

3)使用正则进行301重定向,实现伪静态:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+).html$ news.php?id=$1

将news.php?id=123这样的地址转向到news-123.html

另外一种方法就是在Apache下vhosts.conf中配置301重定向

为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置如下:

<VirtualHost *:80>
ServerName file.zyku.net
DocumentRoot /home/xxxxx
</VirtualHost>

<VirtualHost *:80>
ServerName zyku.net
RedirectMatch permanent ^/(.*) https://file.zyku.net/$1
</VirtualHost>
返回顶部
顶部