如何将所有网址转发到yii中的单个网址

时间:2012-09-25 05:37:21

标签: yii

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

2 个答案:

答案 0 :(得分:7)

<强>更新

自Yii 1.1.16起,旧代码示例停止工作。感谢JamesG(请参阅comment)了解新解决方案。代码示例已更新。


正如您已经想到的那样,catchAllRequest是从yii中执行此操作的最佳方式。它是专门针对这种情况而制定的,正如documentation中非常明显的那样。使用它也可能会让你略微提升性能(超过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
    
  3. 注意:这必须是urlManager的rules数组配置中的第一条规则。

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


    Bug注意事项: 检查github问题here

答案 1 :(得分:0)

你有两个选择:

  • 使用.htaccess重写规则

  • 使用Yii的urlManager规则,模式匹配任何网址。

建议使用第一个选项,因为它由服务器本身处理,它甚至不会触及Yii或PHP,因此具有更好的性能,并且可以更好地防止可能的安全性中断。