我需要知道如何将所有网址转发到yii中的单个网址 所有链接都转到一个网址 需要这个来显示维护信息
答案 0 :(得分:7)
<强>更新强>
自Yii 1.1.16起,旧代码示例停止工作。感谢JamesG(请参阅comment)了解新解决方案。代码示例已更新。
正如您已经想到的那样,catchAllRequest
是从yii中执行此操作的最佳方式。它是专门针对这种情况而制定的,正如documentation中非常明显的那样。使用它也可能会让你略微提升性能(超过urlManager
),但我怀疑它会引人注意。
另一方面,如果你想使用urlManager
,你可以尝试(也可以阅读代码示例中的注释):
1.1.16及以上版本:
'<url:(.*)>'=>'maintenance/index'
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
注意:这必须是urlManager的rules
数组配置中的第一条规则。
然而正如sl4mmer已经提到的,htaccess或服务器配置是最好的方法,因为服务器毕竟在将请求发送到php之前先捕获请求。
Bug注意事项: 检查github问题here。
答案 1 :(得分:0)
你有两个选择:
使用.htaccess
重写规则
使用Yii的urlManager
规则,模式匹配任何网址。
建议使用第一个选项,因为它由服务器本身处理,它甚至不会触及Yii或PHP,因此具有更好的性能,并且可以更好地防止可能的安全性中断。