TongWeb重写url实现

TongWeb 提供等同 Apache 的 rewrite 重写url机制功能配置说明

1、 TongWeb 提供了重写 Valve(Rewrite Valve)来实现 URL 重写功能,方式非常类
似于 Apache HTTP Server 的 mod_rewrite 模块。

配置:

重写 Valve 使用包含重写指令的 rewrite.config 文件,且必须放在 Web 应用的
WEB-INF 文件夹中。
TongWeb 通过识别此文件,自动添加

com.tongweb.catalina.valves.rewrite.RewriteValve 到相应的应用中,此应用部署后的访问
都会受到指令文件规则的处理。
文件内容举例:
RewriteCond %{REQUEST_PATH} !-d
RewriteCond %{REQUEST_PATH} !-f
RewriteRule ^(.*)$ index.php/$1 [L]

表达式的作用是除了一些静态文件、路径之外的请求都会在请求 URL 加上

“index.php”的前缀来进行访问。如应用前缀配置成“/”后,访问的变化为:
	http://127.0.0.1:8088/home/Demo/demo -->
	http://127.0.0.1:8088/index.php/home/Demo/demo

指令

rewrite.config 文件包含一系列指令,这些指令和 Apache 提供的 mod_rewrite 所用
的指令很像,尤其是核心的 RewriteRule 与 RewriteCond 指令。

2、RewriteCond

格式:RewriteCond TestString CondPattern

	RewriteCond 指令定义了一个规则条件。一个或多个 RewriteCond 指令可以优先
于 RewriteRule 指令执行。如果 URI 当前状态匹配它的模式,并且满足了这些条件,才
会使用下列规则。

下面列出了重写 Valve 专有的变量:

• REQUEST_PATH
对应用于映射的完整路径。
• CONTEXT_PATH
对应映射的上下文的路径。
• SERVLET_PATH
对应 Servlet 路径。
• THE_REQUEST
由浏览器发送给服务器的完整 HTTP 请求代码行(比如,GET /index.html HTTP/1.1)。
这并不包括任何由浏览器发送的额外报头。
• REQUEST_URI
HTTP 请求代码行中所请求的资源(如/index.html)。
• REQUEST_FILENAME
与请求相匹配的文件或脚本的完整本地文件系统路径。
• HTTPS
当连接使用 SSL/TLS 时,含有文本 "on",否则含有 "off"。

范例:

• 假如想根据请求头的 User-Agent: 对网站主页进行重写,可以使用下列代码:
	RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
	RewriteRule ^/$ /homepage.max.html [L]
	RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
	RewriteRule ^/$ /homepage.min.html [L]
	RewriteRule ^/$ /homepage.std.html [L]
	
	说明:如果使用的浏览器将它自身标识为 'Mozilla'(包括 Netscape Navigator、
	Mozilla,等等),那么这就是内容最大化主页(max homepage。它可以包含框架
	或其他特性);如果使用的是 Lynx 浏览器(基于终端的),那么获得的就是内容
	最小化的主页(min homepage)——专为便于浏览文本而设计的版本;如果这些条
	件都不适用(你使用的是其他浏览器,或者你的浏览器将其自身标识为非标准内
	容),那么得到的就是标准主页(std homepage)。

3、RewriteRule

格式:RewriteRule Pattern Substitution

RewriteRule 指令是重写机制的核心。此指令可以多次使用,每个实例都定义一个单独的重
写规则。这些规则的定义顺序尤为重要,因为这是在运行时应用它们的顺序。
模式是一个作用于当前 URL 的兼容 perl 的正则表达式。如:
RewriteRule ^(.*)$ index.php/$1 [L

猜你喜欢

转载自blog.csdn.net/qq_43491705/article/details/111161245