重写规则

重写规则也被熟知为RewriteRule,几乎在各个Web服务中均是常用的功能,TeaWeb也提供了较为完整的支持。

添加一个重写规则

我们现在就以以下需求作为示例,演示如何利用TeaWeb添加一个重写规则:

  1. /article/123456.html 重写为 /article.php?id=123456

上面的123456只是一个演示,可能是任意一个数字。这个需求很常见,因为很多CMS都要把程序伪装成比较好看的URL。

步骤1 - 添加路径规则

  • 在”设置”下的”路径规则”页面中点击”添加新路径规则”:rewrite.png

  • 填入一个路径/article/,这里我们选匹配前缀,表示所有前缀为/article/的URL都会被匹配:rewrite2.png

  • 点击底部的”保存”,跳转到路径规则列表:rewrite3.png

步骤2 - 设置Rewrite

  • 点击上图中的”详情”,进入以下界面:rewrite4.png

  • 点击上图中的”重写规则”,进入重写规则列表页面:rewrite5.png

  • 点击上图的”添加”进入重写规则填写页面,并填写相关内容:rewrite6.png其中的\d+表示一个或多个数字,${1}表示正则表达式匹配的第一个括号里的内容,这里也可以使用别的变量,可以在这里查看可以使用的变量

  • 点击上图中的”保存”,会返回重写规则列表页面:rewrite7.png点击顶部的”点击重启后生效”连接,可自动重启服务

  • 这时候就可以在浏览器上访问 http://你的域名/article/123456.html 了。

更多示例

将所有非teaos.cn的域名跳转到默认网站

下面演示如何将非”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}
    • 保存