关于.htaccess和301重定向。

2013-11-21 云破天开 网站 评论(0) 阅读(3622)

打开程序包,你常常会发现了一个不认识的文件。.htaccess是什么。这个连文件名都没有的家伙,扩展名还这么丑。看了百度百科那一长串的解释我都快疯了,是作者不懂中文么。世界本来没有这么复杂,为什么总有人在故弄玄虚。

因此我决定重新解释一下.htaccess

一、定义

.htaccess 是系统级别的配置文件。站长可以在文件中自定义指令。用于管控.htaccess所在目录和子目录的文件。一般放在网站根目录。

二、.htaccess 有什么作用:

1、是否显示文件列表。

2、定义错误页面。400~409

400 Auth Req'd  

401 Auth Req'd  

402 Payment Req'd  

403 Forbidden  

404 Not Found  

405 Method Not Allowed  

406 Not Acceptable  

407 Proxy Auth Repid  

408 Request Time Out  

409 Conficting Request

3、预设index页面。即改用其他文件作为首页。

4、设置WWW。把不带www的域名转跳到到www的上面。(搜索引擎会天真的认为,带www和不带www的URL是不同的两个URL,即使当它们指向同一个网站时,搜索引擎也不懂。这样会主域名的pr值会被两个URL分散。)

5、设置301 Moved Permanently 永久转址。302 Moved Temporarily 临时转址

6、存取限制。设定目录中文件的存取权限。

7、给文件夹加密码。就是所谓的 BASIC认证

三、如何创建.htaccess

不用想 windows下肯定是创建不了的,扩展名丑就不说了,主要是这家伙没有文件名。

你可以用写字板写好,然后另存为.htaccess。

我还有一个更简单的方法:在线制作,傻瓜式操作,完美解决你不懂程序的问题。http://www.htaccesseditor.com/

-----------------------------------------------------------------------------------------------------------
什么是301重定向就是你要写段声明告诉搜索引擎,你大哥换域名了。


下面是关于如何完美解决301重定向的两种方法,从月光那儿转来的。
来自于Gevin的投稿文章,略有改动,原文在这里。

从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。本文介绍两个较为简单的完美解决301重定向的方法。

方法1:修改.htaccess文件

代码如下:

<ifmodule mod_rewrite.c>

RewriteEngine On

RewriteCond %{HTTP_HOST} blog.iflyhigher.tk$ [NC]

RewriteRule ^(.*)$ http://blog.igevin.info/$1 [R=301,L]

RewriteCond %{HTTP_HOST} iflyhigher.tk$ [NC]

RewriteRule ^(.*)$ http://igevin.info/$1 [R=301,L]

RewriteCond %{HTTP_HOST} moiya.tk$ [NC]

RewriteRule ^(.*)$ http://igevin.info/$1 [R=301,L]

</ifmodule>

本博需要对三个域名进行重定向,所以写的比较多,关键代码就是2句话

RewriteCond %{HTTP_HOST} blog.iflyhigher.tk$ [NC]

RewriteRule ^(.*)$ http://blog.igevin.info/$1 [R=301,L]

第一行的域名是需要被重定向的旧域名,第二行的是现在网站的域名。


方法2:使用PHP的重定向代码

新建一个index.php文件,然后参考下面代码按自己的重定向要求做简单修改:

< ?php

$the_host = $_SERVER['HTTP_HOST'];

$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';

switch ($the_host)

{

   case "www.iflyhigher.tk":

   case "iflyhigher.tk":

       $location = "Location: http://igevin.info" . $request_uri;

       break;

   case "blog.iflyhigher.tk":

       $location = "Location: http://blog.igevin.info" . $request_uri;

       break;

   case "www.moiya.tk":

   case "moiya.tk":

       $location = "Location: http://igevin.info";

       break;

   default:

       $location = "Location: http://igevin.info";

       break;

}

header('HTTP/1.1 301 Moved Permanently');

header($location);

exit();

?>

如果只要对一个域名进行重定向,可以把代码简化成下面的形式:

< ?php

$the_host = $_SERVER['HTTP_HOST'];//取得进入所输入的域名

$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';//判断后面的请求部分

if($the_host !== 'igevin.info')//igevin.info是我现在的域名

{

   header('HTTP/1.1 301 Moved Permanently');//发出301头部

   header('Location: http://igevin.info'.$request_uri);//跳转到我的新域名地址

   exit();

}

?>

注意,最后的exit()函数是一定要写的,我最初就没有写,结果只能重定向首页.

关于重定向的一些细节
由于要对三个域名进行重定向,重定向前,我首先将这三个域名作为Addon Domain绑定到我的服务器上去,并让这三个域名指向同一个文件夹,这样,只要修改这一个文件夹中的.htaccess文件或者index.php文件就可以了。如果没有.htaccess文件或者index.php文件,新建一个即可。
希望本文对需要进行301重定向的朋友有帮助。

关于.htaccess和301重定向的作用和方法不只这些。使用中你一定会有更多发现。




发表评论: