在 CodeIgniter 中重定向整个站点不起作用
Posted
技术标签:
【中文标题】在 CodeIgniter 中重定向整个站点不起作用【英文标题】:Redirect an entire site in CodeIgniter does not work 【发布时间】:2018-01-30 23:29:46 【问题描述】:我需要将整个网站重定向到一个特定的控制器 (under_construction),但我不想在所有页面中都放入一个脚本来重定向。
我想,我也许可以在 CodeIgniter 的 .htaccess
或 routes
中做到这一点。
在 .htaccess 中,我不知道如何使用 regex
或如何操作。
routes
我尝试了以下方法:
$route['index.php/test'] = "under_construction";
但这不起作用。不显示任何回应,不做任何事情
我所期望的,所有页面都转到under_construction
控制器。
我想为很多控制器做这个。有没有使用regex
的简单方法?
【问题讨论】:
看起来您想将所有控制器重定向到建设中的页面?你可以使用“钩子”。 @ichadhr 是的,这就是我想要的,将我所有的控制器重定向到建设中的页面,但我不知道如何使用钩子 在路由中包含index.php
是错误的。请查看docs。
【参考方案1】:
这在 .htaccess 中对我有用:
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_URI !index.php/under_construction$ [NC]
RewriteRule ^(.*)$ http://localhost/index.php/under_construction [L,R=302]
您确实想使用 .htaccess 以获得最佳性能,并且 302 重定向说,“此重定向不是永久性的,所以稍后尝试相同的请求 URI”。
【讨论】:
我这样做了,但是当我进入一个页面时,它会显示它 您的服务器上是否启用了 mod_rewrite?缓存清除了吗? 我怎么知道?? ***.com/questions/7337724/… 我现在有问题,图片看不到【参考方案2】:使用路由,您可以执行类似的操作。在APPATH.'config/routes.php'
:
$route['(:any)'] = 'wanted/controller/method';
在默认路由(安装时附带)之后设置此路由。
【讨论】:
想象一下,当您的所有网页看起来都一样时,Google 会对重复内容进行处罚... 你是对的。最好是在index.php
文件中设置变量并签入,例如APPPATH.'core/MY_Controller.php
以获得这样的常量并加载特定的登录页面。
这与您的路由解决方案有何不同?
我的意思实际上是重定向(或重新映射)到特定的controller/method
。也许更好的重定向,因为可以设置响应状态。这里的答案只是为了展示不被视为最佳解决方案的路线的可用性。我可能会和你一起去。以上是关于在 CodeIgniter 中重定向整个站点不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 CodeIgniter 3 中重定向后 Flashdata 未清除
如何在 Codeigniter 中重定向和删除 index.php [重复]