重写规则也被熟知为RewriteRule,几乎在各个Web服务中均是常用的功能,TeaWeb也提供了较为完整的支持。
我们现在就以以下需求作为示例,演示如何利用TeaWeb添加一个重写规则:
将 /article/123456.html 重写为 /article.php?id=123456
上面的123456
只是一个演示,可能是任意一个数字。这个需求很常见,因为很多CMS都要把程序伪装成比较好看的URL。
-
点击上图的"添加"进入重写规则填写页面,并填写相关内容:
其中的
\d+
表示一个或多个数字,${1}
表示正则表达式匹配的第一个括号里的内容,这里也可以使用别的变量,可以在这里查看可以使用的变量。 -
这时候就可以在浏览器上访问
http://你的域名/article/123456.html
了。
下面演示如何将非"teaos.cn"的域名的访问跳转到默认网站:
- 增加一个路径规则
- 匹配路径:填入
/
- 匹配类型:选择
匹配前缀
- 保存
- 匹配路径:填入
- 在刚才添加的路径规则中增加一个重写规则:
- 匹配规则:填入
.*
- 目标类型:选择
转发到URL
- 目标URL:输入
http://teaos.cn
- 更多选项 -- 转发方式:选择
跳转
- 更多选项 -- 匹配条件:
- 参数:填入
${host}
,表示参数值是用户访问的域名 - 运算符:选择
正则表达式不匹配
- 对比值:
teaos\.cn
- 参数:填入
- 保存
- 匹配规则:填入
经过此配置后,用户所有非teaos.cn的域名都会自动跳转到http://teaos.cn
上。
当然在实际应用中,你需要将teaos.cn
修改成你自己的域名。
下面演示如何把 /news/xxx
重写到 /news.php?id=xxx
:
- 增加一个路径规则
- 匹配路径:填入
/news/
- 匹配类型:选择
匹配前缀
- 保存
- 匹配路径:填入
- 在刚才添加的路径规则中增加一个重写规则
- 匹配规则:填入
^/news/(?P<newsId>.+)$
,可以看到这里我们定义了命名变量newsId
,可以在别的地方使用${newsId}
来引用这个变量值 - 目标类型:选择
转发到URL
- 目标URL:输入
/news.php?id=${newsId}
- 保存
- 匹配规则:填入