.htaccess文件各项参数说明/301重定向

首先,先说URL的重写规则怎么写。这个主要是用于作伪静态。php

重写规则是放在.htaccess文件下或Apache的配置文件(httpd.confsites_conf目录里的一些特定的网站配置文件)html

打开你的.htacess文件,开头内容以下:服务器

Options +FollowSymLinkside

RewriteEngine on网站

RewriteBase /spa

RewriteEngine on是表明开启rewrite,而RewriteBase / 是表示全部规则前都存在“/”,写了这条以后,你后面全部规则的开头,只须要写“^”就后了,但要注意的是,此规则仅在.htacess文件中被支持,若是是服务器配置文件,此规则会被忽略、没必要写。设计

在正是写规则前,先为你们讲一下重写中设计到的特殊字符的含义。htm

*表明前面0或更多个字符seo

+表明前面1或更多个字符内存

?表明前面01个字符

^表明字符串的开始位置

$表明字符串结束的位置

.为通配符,表明任何字符

\将跟在其后的字符还原为字符自己,例如“\+”表明的就是“+”,而非其它意思。

^在方括号里表示非的意思。例如[^.]表明非通配符。

那么假如咱们但愿将“http://www.seozhao.com/b.php?id=1″此类URL伪静态为“http://www.seozhao.com/b/1″的形式,则规则以下:

RewriteRule ^b/([0-9]+)/?$ /b.php?id=$1 [L]

上面的例子中,^表示域名后来的URL的开始,$表示字符串结束,也就是域名后面的URL结束。[0-9]表示一个数字,由于只要URL存在,其必然存在一个id数字。紧接其后的+表示表示出现1个或多个数字。[0-9]+连在一块儿,表示字符以数字形式出现,数字范围为0-9,出现次数为1或屡次。$表示字符串结束,?$表示在根域名后到域名结束,有01个字符。$1表示存在内存中的内容,也就是说第一个圆括号中的内容。[L]表示若是规则匹配就中止,不然须要继续运行剩下的规则,一般这个不必深究。

那除非伪静态外,有时候咱们还须要利用.htacess进行301重定向。符号含义不变,举例以下:

RewriteEngine on

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

RewriteRule ^(.*)$ http://www.seozhao.com/$1 [R=301,L]

上述规则是将seozhao.com 301 www.seozhao.com,符号的含义相信没必要再作解释了。

那么通过这两条规则,你应该有所启发了,若是你的网站作改版,致使你的URL结构发生了变化,怎么办?答案很简单,咱们能够利用.htacess文件,经过写rewrite规则,将老的URL 301到新的URL上。

RewriteRule ^(.*?)/?index\.html$ /$1? [L,R=301]

这个规则是将域名下搜有a/index.html 301 a/ URL下。规则是死的,最重要的是你们要活学活用,相信熟练掌握rewrite规则后,你会发现网站全部的URL与返回码将会所有在你的掌控下!

相关文章
相关标签/搜索