伪静态规则写法

REWRITE伪静态

一、Apache配置: 
进入/etc/httpd/conf/目录下,打开httpd.conf文件。 
启用rewrite 
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 # 
启用.htaccess AllowOverride None 修改为: AllowOverride All 
-------------------------------------------------------------------------------- 
二、Rewrite写法 
服务器有配置文件不可能由我们来改,所以大多情况下要在网站的根目录下建一个.htaccess文件。 
RewriteEngine on //启动rewrite引擎 
RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //“([0-9]*)” 代表范围 用(.*)代表所有,下同。 
RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虚拟目录 
-------------------------------------------------------------------------------- 
三、mod_rewrite 规则修正符 
1) R 强制外部重定向 
2) F 禁用URL,返回403HTTP状态码。 
3) G 强制URL为GONE,返回410HTTP状态码。 
4) P 强制使用代理转发。 
5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。 
6) N 重新从第一条规则开始运行重写过程。 
7) C 与下一条规则关联,如果规则匹配则正常处理,以下修正符无效 
8) T=MIME-type(force MIME type) 强制MIME类型 
9) NS 只用于不是内部子请求 
10) NC 不区分大小写 
11) QSA 追加请求字符串 
12) NE 不在输出转义特殊字符 \%3d$1 等价于 =$1

ISAPI_Rewrite规则写法 
常见ISAPI_Rewrite规则写法

复制代码代码如下:

# 排除当前虚拟主机需要正常访问的域名(web.3637.com www.3637.com) 
# RewriteCond Host: (?:web|www)\.eboat\.cn 
# 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统) 
RewriteCond Host: web\.eboat\.cn 
RewriteRule (.*) $1 [L] 
# 解决不规范目录(末尾无/)的问题 
# 但前提是目录名不含‘.‘而文件名必须包含,否则无法区分两者 
# 如果保证URL中的目录名称规范,则无需此规则 
RewriteRule ^/([^.]+[^/]$) /$1/ [L,R] 
# 提取任意的二级域名名称(即第一个词汇) 
# 用[a-zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下 
# 如 test.3637.com => web.3637.com/Home/test 
RewriteCond Host: ([a-zA-Z0-9_-]+)\.eboat\.cn 
RewriteRule ^/(.*) /Home/$1/$2 [I,L] 
[ISAPI_Rewrite] 
RepeatLimit 1 
# Defend your computer from some worm attacks 
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] 
# 排除当前虚拟主机需要正常访问的域名(web.3637.com www.3637.com) 
# RewriteCond Host: (?:web|www)\.eboat\.cn 
# 多数情况下是一个,即当前提供二级域名服务的系统(如建站系统) 
RewriteCond Host: web\.eboat\.cn 
RewriteRule (.*) $1 [L] 
# 解决不规范目录(末尾无/)的问题 
# 但前提是目录名不含‘.‘而文件名必须包含,否则无法区分两者 
# 如果保证URL中的目录名称规范,则无需此规则 
RewriteRule ^/([^.]+[^/]$) /$1/ [L,R] 
# 提取任意的二级域名名称(即第一个词汇) 
# 用[a-zA-Z0-9_-]限制名称字符,重写Url到Home/子目录下 
# 如 test.3637.com => web.3637.com/Home/test 
RewriteCond Host: ([a-zA-Z0-9_-]+)\.eboat\.cn 
RewriteRule ^/(.*) /Home/$1/$2 [I,L]

HTTPD.INI文件示例

复制代码代码如下:

[ISAPI_Rewrite] 
# This is a comment 
# 300 = 5 minutes 
CacheClockRate 300 
RepeatLimit 20 
# Block external access to the httpd.ini and httpd.parse.errors files 
RewriteRule /httpd(?:.ini|.parse.errors) / [F,I,O] 
# Block external access to the Helper ISAPI Extension 
RewriteRule .*.isrwhlp / [F,I,O] 
# Some custom rules 
RewriteCond Host: (.+) 
RewriteCond 指令

Syntax:(句法) RewriteCond TestVerb CondPattern [Flags]
这一指令定义一个条件规则,在 RewriteRule 或者 RewriteHeader或 RewriteProxy指令前预行RewriteCond指令,后面的规则 只有它的,模式匹配URI的当前状态并且额外的条件也被应用才会被应用。

TestVerb

Specifies verb that will be matched against regular expression.
特别定义的动词匹配规定的表达式
TestVerb=(URL | METHOD | VERSION | HTTPHeaderName: | %ServerVariable) where:

URL - returns Request-URI of client request as described in RFC 2068 (HTTP 1.1); 
返回客户端在RFC2068中描述的需求的Request-URI
METHOD - returns HTTP method of client request (OPTIONS, GET, HEAD, POST, PUT, DELETE or TRACE); 
返回客户端需求(OPTIONS, GET, HEAD, POST, PUT, DELETE or TRACE)的HTTP方法
VERSION - returns HTTP version; 
返回HTTP版本
HTTPHeaderName - returns value of the specified HTTP header. HTTPHeaderName can be any valid HTTP header name. Header names should include the trailing colon ":". If specified header does not exists in a client‘s request TestVerb is treated as empty string. 
返回特定义的HTTP头文件的值
HTTPHeaderName = 
Accept:
Accept-Charset:
Accept-Encoding:
Accept-Language:
Authorization:
Cookie:
From:
Host:
If-Modified-Since:
If-Match:
If-None-Match:
If-Range:
If-Unmodified-Since:
Max-Forwards:
Proxy-Authorization:
Range:
Referer:
User-Agent:
Any-Custom-Header
得到更多的关于HTTP头文件的和他们的值的信息参考RFC2068

ServerVariable 返回特定义的服务器变量的值 。例如服务器端口,全部服务器变量列表应在IIS文档中建立,变量名应用%符预定;
CondPattern 
The regular expression to match TestVerb
规则表达式匹配TestVerb
[Flags]
Flags is a comma-separated list of the following flags:

O (nOrmalize) 
Normalizes string before processing. Normalization includes removing of an URL-encoding, illegal characters, etc. This flag is useful with URLs and URL-encoded headers
RewriteRule 指令
Syntax: RewriteRule Pattern FormatString [Flags]
这个指令可以不止发生一次,每个指令定义一个单独的重写规则,这些规则的定义命令很重要,因为这个命令在应用运行时规则是有用途的

I (ignore case)
不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令
F (Forbidden)
对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。
L (last rule)
不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写
N (Next iteration)
强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略
NS (Next iteration of the same rule)
以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,
P (force proxy) 
强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,必须确认代理字符串是一个有效的URI包括协议 主机等等否则代理将返回错误
R (explicit redirect)
强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则
RP (permanent redirect)
几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码
U (Unmangle Log)
当URI是源需求而不是重写需求时记载URI
O (nOrmalize)
在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的 
CL (Case Lower) 
小写
CU (Case Upper) 
大写
RewriteHeader directive
Syntax: RewriteHeader HeaderName Pattern FormatString [Flags] 
这个指令是RewriteRule的更概括化变种,它不仅重写URL的客户端需求部分,而且重写HTTP头,这个指令不仅用于重写。生成,删除任何HTTP头,甚至改变客户端请求的方法
HeaderName 
指定将被重写的客户头,可取的值与 RewriteCond 指令中TestVerb参数相同

Pattern
限定规则表达式以匹配Request-URI,
FormatString 
限定将生成新的URI的FormatString 
[Flags]
是一个下列FLAGS的命令分隔列表 
I (ignore case)
不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令
F (Forbidden)
对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。
L (last rule)
不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写
N (Next iteration)
强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略

NS (Next iteration of the same rule)
以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,

R (explicit redirect)
强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则
RP (permanent redirect)
几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码
U (Unmangle Log)
当URI是源需求而不是重写需求时记载URI
O (nOrmalize)
在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的 
CL (Case Lower) 
小写
CU (Case Upper) 
大写

要重移动头,FORMAT STRING模式应该生成一个空字符串,例如这一规则将从客户请求中重移代理

时间: 2024-10-05 05:50:04

伪静态规则写法的相关文章

伪静态规则写法RewriteRule-htaccess详细语法使用

一.正则表达式教程 伪静态规则写法RewriteRule-htaccess详细语法使用教程分享 简单说下:伪静态实际上是利用PHP把当前地址解析成另外一种方法进行访问网站!要学伪静态规则的写法,你必须得懂一点正则,不会没关系,照着下面的套就行 一.正则表达式教程 有一个经典的教程: 正则表达式30分钟入门教程这个教程的确很简单,看完基本上写一些简单的正则就没有问题了.正则是一个需要长期使用的工具,隔段时间不用会忘记,所以我每次都看一遍这个教程.其实学过之后重要的就是一点内容. 简单罗列如下: .

转--htaccess语法教程 apache服务器伪静态规则教程

转自:http://blog.csdn.net/qingli518/article/details/9118361 htaccess语法教程apache服务器伪静态规则教程 注:如果你是为了找Discuz!论坛的为静态规则的话,其实不用看这里,Discuz!的后台有个链接点进去直接Copy就是了.PHPwind的我就不知道了,没用过,后台应该也有吧. 这几天一直在研究Apache的重写规则,虽然网上有很多教程,不过发现大部分都是抄袭一个人的,一点都不全,所以我想写一个简单的易于理解的教程,我学习

dedecms织梦移动版伪静态 - 实现与PC电脑版静态地址url一致教程+伪静态规则

电脑版静态效果 移动版伪静态效果 以下教程所修改的文件(utf8/gbk)打包下载: 修改或者覆盖文件之前请备份以下4个文件\m\index.php\m\list.php\m\view.php\include\arc.listview.class.php 链接: https://pan.baidu.com/s/1i49ABe1 密码: 2wid 电脑版静态生成这里就不多说了,移动版伪静态操作教程如下: 1.移动版域名 m.123.com 解析并指向绑定目录到网站目录的m文件夹 2.后台-系统配置

.htaccesss伪静态规则

利用htaccess文件可以很好的进行站点伪静态,并且形成的目标地址与真正的静态页面几乎一模一样,如abc.html等,伪静态可以非常好的结合SEO来提高站点的排名,并且也能给人一种稳定的印象. 由于伪静态必须要完全根据不同的站点进行不同的设置,因此,我们仅能简单介绍其原理,给出几个常用程序的示例: 若要通过htaccess使用伪静态,则必须空间商支持Rewrite模块,该模块负责URL的重写.否则即便是设置好了,也无法使用,并且还有可能出现500错误. 下面是Discuz的伪静态设置文本: #

有关百度一键分享链接到微信朋友圈无法打开网页,报404错误的解决办法,from=timeline&isappinstalled=0,和伪静态规则有关

最近有好友反映用百度一键分享,分享网页链接到微信朋友圈的时候,发现链接无法打开,提示无法找到该页404错误,同样分享到QQ.微博等链接 能正常访问,这么明显的错误,百度和腾讯应该不会忽略吧. 接报后,我专门分析了一遍他公司的网站,确实是微信朋友圈无法分享网站链接.但是通过微信扫一扫能正常浏览网页,点击分享到朋友圈后,在  从朋友圈去访问的时候,提示无法找到该页,报404错误. 经反复检测,排除了分享代码的问题,和服务器配置问题.我开始怀疑伪静态规则,开启URL重写造成的,我关掉了伪静态,让网页形

Nginx伪静态配置和常用Rewrite伪静态规则

伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面来介绍nginx 伪静态配置方法有需要了解的朋友可参考. nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在server里面写需要的规则即可. 代码如下: server { listen       80; server_name  haha.

7.nginx伪静态规则

网上收集的一些常用的,要用的时候就仿照一下,或直接拿来用. WordPress伪静态规则 location / { index index.html index.php; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filenam

Nginx伪静态规则

nginx伪静态规则 要将http://lovo.com/index.php?t=3用伪静态规则改写成http://lovo.com/t3.html,即可在nginx的conf/nginx.conf里面添加即可. 在location / {}里添加,如: location / {            root   /var/www/html;            index  index.php index.html index.htm;            rewrite ^(.*)/t

.gitignore 规则写法 - 在已忽略文件夹中不忽略指定文件、文件夹【注意项】

1. 在已忽略文件夹中不忽略指定文件夹 /node_modules/* !/node_modules/layer/ 2. 在已忽略文件夹中不忽略指定文件 /node_modules/* !/node_modules/layer/layer.js [注意项]注意写法 要忽略的文件夹一定要结尾 /* ,否则不忽略规则将无法生效 3. 其他规则写法 (附) 以斜杠"/"开头表示目录: 以星号"*"通配多个字符: 以问号"?"通配单个字符 以方括号&qu