会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 搜索引擎 > Rewrite法则怎么写之Apache篇

Rewrite法则怎么写之Apache篇

时间:2012-08-13 20:35:09   作者:   来源:   点击:

常常看到很多人求助,说他的IDC不支持节制面板做301怎么办,或说问伪静态法则怎么写,所以写这篇博文,主要本文主要讨论在Apache下,进行编写Rewrite法则。

首先,先说URL的重写法则怎么写。这个主要是用于做伪静态。重写法则是放在.htaccess文件下或Apache的配置文件(httpd.conf或sites_conf目录里的一些特定的网站配置文件),此文主要讨论.htacess文件(其实都差不多)。

打开你的.htacess文件,开首内容如下:

RewriteEngine on

RewriteBase /

RewriteEngine on是代表开启rewrite,而RewriteBase / 是暗示所有法则前都存在“/”,写了这条之后,你后面所有法则的开首,只需要写“^”就后了,但要注意的是,此法则仅在.htacess文件中被支持,如果是办事器配置文件,此法则会被疏忽、没必要写。在正是写法则前,先为年夜家讲一下重写中设计到的特殊字符的含义。

*代表前面0或更多个字符

+代表前面1或更多个字符

?代表前面0或1个字符

^代表字符串的起头位置

$代表字符串结束的位置

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

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

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

那么假定我们希望将“.***/b.php?id=1″此类URL伪静态为“.***/b/1″的形式,则法则如下:

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

上面的例子中,^暗示域名后来的URL的起头,$暗示字符串结束,也就是域名后面的URL结束。[0-9]暗示一个数字,因为只要URL存在,其必定存在一个id数字。紧接其后的+暗示暗示呈现1个或多个数字。[0-9]+连在一起,暗示字符以数字形式呈现,数字范围为0-9,呈现次数为1或多次。$暗示字符串结束,?$暗示在根域名后到域名结束,有0或1个字符。$1暗示存在内存中的内容,也就是说第一个圆括号中的内容。[L]暗示如果法则匹配就停止,不然需要继续运行剩下的法则,通常这个没需要深究。

那除非伪静态外,有时候我们还需要操纵.htacess进行301重定向。符号含义不变,举例如下:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^搜索引擎优化zhao$ [NC]

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

上述法则是将搜索引擎优化zhao 301 到 ***,符号的含义相信没必要再做诠释了。

那么颠末这两条法则,你应该有所启发了,如果你的网站做改版,致使你的URL布局产生了转变,怎么办?谜底很简单,我们可以操纵.htacess文件,通过写rewrite法则,将老的URL 301到新的URL上。

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

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

本文首发天津搜索引擎优化:.搜索引擎优化zhao/135.html 转载请注明

分享到:

网友评论