在 CodeIgniter 中重定向整个站点不起作用

Posted

技术标签:

【中文标题】在 CodeIgniter 中重定向整个站点不起作用【英文标题】:Redirect an entire site in CodeIgniter does not work 【发布时间】:2018-01-30 23:29:46 【问题描述】:

我需要将整个网站重定向到一个特定的控制器 (under_construction),但我不想在所有页面中都放入一个脚本来重定向。

我想,我也许可以在 CodeIgniter 的 .htaccessroutes 中做到这一点。 在 .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 中重定向后会话丢失

在 CodeIgniter 3 中重定向后 Flashdata 未清除

在codeigniter的htaccess中重定向url

如何在 Codeigniter 中重定向和删除 index.php [重复]

如何使用 Codeigniter 在自定义 404 页面中重定向 404 错误?

[本地主机在Codeigniter中重定向了您太多次