.htaccess rewrite 规则详细说明

2019-10-13 22:19:55王冬梅

RewriteMap 扩展: 引用方法是 ${mapname:key|default}
服务器变量: 引用方法是 %{ NAME_OF_VARIABLE }  这个是我们最常使用到的功能
NAME_OF_VARIABLE具体数值见下表:

HTTP headers: connection & request:
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
server internals: system stuff: specials:
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

这些都对应于类似命名的HTTP MIME头、Apache服务器的C变量以及Unix系统中的 struct tm字段,大多数都在其他的手册或者CGI规范中有所讲述。 而其中为mod_rewrite所特有的变量有:
IS_SUBREQ
如果正在处理的请求是一个子请求,它包含字符串”true”,否则就是”false”。 模块为了解析URI中的附加文件,有可能会产生子请求。
API_VERSION
这是正在使用的httpd中(服务器和模块之间内部接口)的Apache模块API的版本, 其定义位于include/ap_mmn.h中。此模块版本对应于正在使用的Apache的版本 (比如,在Apache 1.3.14的发行版中,这个值是19990320:10)。 通常,对它感兴趣的是模块的作者。
THE_REQUEST
这是由浏览器发送给服务器的完整的HTTP请求行。(比如, “GET /index.html HTTP/1.1″). 它不包含任何浏览器发送的附加头信息。
REQUEST_URI
这是在HTTP请求行中所请求的资源。(比如上述例子中的”/index.html”.)
REQUEST_FILENAME
这是与请求相匹配的完整的本地文件系统的文件路径名或描述.

CondPattern是条件pattern, 即, 一个应用于当前实例TestString的正则表达式, 即, TestString将会被计算然后与CondPattern匹配.

注意:CondPattern是一个兼容perl的正则表达式, 但是还有若干补充:

可以在pattern串中使用'!‘ 字符(惊叹号)来实现匹配的反转。

RewriteOptions Options

RewriteOptions指令为当前服务器级和目录级的配置设置一些选项。 Option可以是下列值之一: