如何通过.htaccess实现301跳转

在做站过程中我们或多或少的会遇到关于网站搬家、网站架构更改的问题。但如果不做任何预防工作就着手网站更改,等着我们的就是搜索引擎上网站无情的“消失”。

所以为了防止由于网站结构或网站地址变更造成的影响,我们就需要了解一下如何使用.htaccess来实现网站的301跳转。

首先说到.htaccess文件很多人都听说过他,这是一个强大的文件,可以定义很多功能。包括自定义404页面、关闭index of页面(教程)还有我们今天要讲的301重定向功能。当然除了这些更加强大的功能也是支持的,如将某个特定浏览器的用户导向特定页面、对某个目录进行特定访问人群的限制(教程)、甚至用来屏蔽特定的攻击(通过IP、USER-AGENT、跳转来源等)。点我查看.htaccess基本教程

要想了解.htaccess的重写功能,就需要了解下.htaccess文件的重写规则。

RewriteEngin On (启用重写规则 – 这个必须要写在.htaccess的最开端,否则重写规则无效)

RewriteCond TestString CondPattern (这个可以理解为条件公式,即需要满足的基本条件)

RewriteRule Pattern Substitution (这个是规则,即满足上面的条件后需要执行的操作)

下面是一个简单的重写规则:将oldname.com 重定向到 newname.com

RewriteEngin On

RewriteCond %{HTTP_HOST} ^oldname\.com$ [NC]

RewriteRule .* ^newname\.com$ [R=301]

*由于.htaccess识别正则表达式,所以在书写条件、规则的时候你会经常见到诸如 ^ \ $ 这样的字符。可先了解下正则表达。如果图省事,直接把oldname与newname换成你的域名就行了。

*[NC] – 注明不分大小写

* [R=301] – 注明使用301跳转,或者直接使用[R]标记也行

第二个例子用来模拟将网站下某个目录变更名称或路径:将domain.com/old下的访问全部重定向到domain.com/newfold/new/目录下。

RewriteEngin On

RewriteCond %{REQUEST_URI} ^\/old [NC]

RewriteRule .* \.\/newfold\/new\/ [R]

*这里我们假设已经定义了重写基准路径就是domain.com的这个目录(RewriteBase /),那么我们的条件就应该是访问 /old 目录时重定向到 /newfold/new/目录下即可。

你可能感兴趣的:(建站)