首先我们在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>