apache伪静态规则解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
apache伪静态规则解析
apache伪静态规则解析
最近有个客户有个要求,昨天折腾了⼀会,没解决,今天没啥就多学习学习
还是根据例⼦来学习⽐较快
1 简单的重定向规则
RewriteEngine On //启动规则
RewriteBase / //根⽬录启动伪静态
RewriteRule ^index/$ index.php //访问index/ 那么就是访问index.php
RewriteRule ^register/$ /s_youka/register.html //访问register 就是访问/s_youka/register.html
2 稍微复杂⼀点的
RewriteEngine on
RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$1&id=$2
//后⾯的 $1 $2 对应前⾯的()内的代码其他的是正则规则
//^代表开头$代表结束 [0-9]+ 是多个0到9之间的数字 \是转义后⾯的.
3 更精准⼀些的
/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]
//重点介绍下PT 交给下⼀条处理
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将⽤缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁⽤URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使⽤代理转发。
5) L(last rule) 表明当前规则是最后⼀条规则,停⽌分析以后规则的重写。
6) N(next round) 重新从第⼀条规则开始运⾏重写过程。
7) C(chained with next rule) 与下⼀条规则关联
如果规则匹配则正常处理,该标志⽆效,如果不匹配,那么下⾯所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只⽤于不是内部⼦请求
10) NC(no case) 不区分⼤⼩写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下⼀个处理
例如:
复制代码代码如下:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量
4 discuz3x的规则
RewriteEngine On //开启
RewriteBase / //当前根⽬录
RewriteCond %{QUERY_STRING} ^(.*)$ //定义了规则⽣效的条件-查询字符串
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
//topic-开头 .htm后缀实际上市访问了后⾯的地址
5 nginx类似
Nginx下设置伪静态⽅法与Apache差不多,直接在nginx.conf (或者在对应的*.conf) 中找到需设置伪静态规则的服务器对应字段,在
server{ location/{ } }中添加以下代码:
server {
listen 80 default_server;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
rewrite ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3;
}
}
添加后重启Nginx服务即可⽣效!
PS:如果你的伪静态不起作⽤,请检测⽂件的名字是不是 .htaccess 切记。