2

我需要知道如何将所有 url 转发到 yii 中的单个 url 所有链接都转到单个 url 需要这个来显示维护消息

4

2 回答 2

7

更新

旧代码示例自 Yii 1.1.16 起停止工作。感谢 JamesG(见评论)的新解决方案。代码示例已更新。


正如您已经发现的那样,catchAllRequest从 yii 中执行此操作是最好的方法。它是专门为此类情况制作的,从文档中可以明显看出。使用它也可能会给你带来轻微的性能提升(超过urlManager),但我怀疑它会不会很明显。

另一方面,如果您想使用urlManager,您可以尝试使用(另请阅读代码示例中的注释):

  1. 1.1.16 及以上版本:

    '<url:(.*)>'=>'maintenance/index'
    
  2. 1.1.15 及以下版本:

    '<url:(.*)>'=>'maintenance/index'
    
    // '(.*)'=>'maintenance/index' // this used to work in previous versions ...
    // of Yii (below 1.1.16) mainly due to a bug, see notes
    

注意:这必须是 urlManagerrules数组配置中的第一条规则。

然而,正如 sl4mmer 已经提到的,htaccess 或服务器配置是最好的方法,因为服务器毕竟在将请求发送到 php 之前首先捕获请求。


错误说明:在此处检查 github 问题。

于 2012-09-29T13:28:30.477 回答
0

您最后有两个选择:

  • 使用.htaccess重写规则

  • 使用 Yii 的urlManager规则与匹配任何 URL 的模式。

推荐第一个选项,因为它是由服务器自己处理的,它甚至不涉及 Yii 或 PHP,因此具有更好的性能,并且可以更好地防止可能的安全漏洞。

于 2012-09-25T05:55:59.657 回答