Apache中基于目录级.htaccess [301]重定向规则详解

已有 1719 人阅读此文 | 2016-03-09 21:04 | 来源: 刘传鹏博客 | 作者: 刘传鹏

Apache-htaccess

Apache[301]重定向常用指令:

RewriteEngine On 表示重写规则开始生效

RewriteCond 如果条件匹配则执行RewriteRule的规则

RewriteRule 定向重写规则

下面具体说明指令的用法:

重定向指令RewriteCond 详解

【功能】如果TestString的条件匹配CondPattern要求,RewriteRule的重写规则就生效。

【语法】 RewriteCond TestString CondPattern [flags]

TestString是一个纯文本字符串,既可以是普通字符串,也可以是变量结构扩展。

变量结构扩展有两种:

  1. RewriteMap扩展:引用方法是:${mapname:key|default}
  2. 服务器变量:引用方法:%{NAME_OF_VARITABLE},比如:%{ HTTP_HOST}

CondPattern是条件模式,既一个用来与当前TestString实例的正则表达式比较,一般TestString将被首

先计算,然后再与CondPattern匹配

[flags]是特殊的标记 作为RewriteCond指令的第三个参数。flags是一个以逗号分隔的列表。

重定向指令RewriteRule详解

【说明】定义重写的规则

【语法】RewriteRule Pattern rewritePattern [flags]

Pattern 可以使用如下特殊匹配規則,如php等其他語言類似。

“.” ——————- 换行符以外的所有字符

“\w” —————- 匹配字母或数字或下划线或汉字

“\s” —————– 匹配任意的空白符

“\d” —————– 匹配数字

“\b” —————– 匹配单词的开始或结束

“^” —————— 匹配字符串的开始

“$” —————— 匹配字符串的结束

“*” —————— 重复零次或更多次

“+” —————— 重复一次或更多次

“?” ——————- 重复零次或一次

“{n}” —————- 重复n次

“{n,}” ————— 重复n次或更多次

“{n,m}” ————- 重复n到m次

“[0-9]” ————– 匹配单个数字

rewritePattern 是针对Pattern 匹配后的URL进行rewritePattern 规定的替换。应用替换时,前面Pattern 第一个()中匹配的内容后面rewritePattern 就可以用$1引用,第二个()中匹配的就用$2应用……以此类推。

[flag]与RewriteCond用法一致。

重定向301规则表达式的说明

. 匹配任何单字符

[chars] 匹配字符串:chars

[^chars] 不匹配字符串:chars

text1|text2 可选择的字符串:text1或text2

? 匹配0到1个字符

* 匹配0到多个字符

+ 匹配1到多个字符

^ 字符串开始标志

$ 字符串结束标志

n 转义符标志

Apache301重定向案例:

RewriteRule index.html index.php

比如:index.html -> index.php

RewriteRule ^test([0-9]*).html$ ?test.php?id=$1

比如:test8.html -> test.php?id=8

RewriteRule ^cat-([0-9]+)-([0-9]+)\.html$ ?cat.php?id1=$1&id2=$2

比如:cat-1-3.html -> cat.php?id1=1&id2=3

RewriteRule ^cat-([a-zA-Z0-9\-]*)-([0-9]+)-([0-9]+)\.html$ ?cat.php?id0=$1&id1=$2&id2=$3

比如:cat-zbc2ac-3-5.html -> cat.php?id0=zbc2ac&id1=3&id2=5

RewriteRule ^cat1-([0-9]+)-([0-9]+)-([0-9]+)\.html$ ?cat1.php?id1=$1&id2=$2&id3=$3

比如:cat1-4-3-8.html -> cat1.php?id1=4&id2=3&id3=8

RewriteRule ^cat([0-9]*)/$ ? cat.php?id1=$1

比如:cat5/ -> cat.php?id1=5

RewriteRule ^catm([0-9]*)/([0-9]*)/$ catm.php?id1=$1&id2=$2

比如:catm6/3/ -> catm.php?id1=6&id2=3

本文地址: http://liuchuanpeng.com/website-making/172.html

已有 1 人评论 网友评论

必填

选填

选填

  • 唯历史 2016-06-14 21:09:31 回复

    很专业的wp博客!!!收藏先,遇到问题过来看看

刘传鹏博客|专注分享互联网商业模式和网站运营推广策略的博客