【问题标题】:Redirect an entire site in CodeIgniter does not work在 CodeIgniter 中重定向整个站点不起作用
【发布时间】: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

标签: php regex .htaccess codeigniter routes


【解决方案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?缓存清除了吗?
  • 我怎么知道??
  • 我现在有问题,图片看不到
【解决方案2】:

使用路由,您可以执行类似的操作。在APPATH.'config/routes.php':

$route['(:any)'] = 'wanted/controller/method';

在默认路由(安装时附带)之后设置此路由。

【讨论】:

  • 想象一下,当您的所有网页看起来都一样时,Google 会对重复内容进行处罚...
  • 你是对的。最好是在index.php 文件中设置变量并签入,例如APPPATH.'core/MY_Controller.php 以获得这样的常量并加载特定的登录页面。
  • 这与您的路由解决方案有何不同?
  • 我的意思实际上是重定向(或重新映射)到特定的controller/method。也许更好的重定向,因为可以设置响应状态。这里的答案只是为了展示不被视为最佳解决方案的路线的可用性。我可能会和你一起去。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多