【问题标题】:Codeigniter - Show 404 Page when User Types index.phpCodeigniter - 当用户输入 index.php 时显示 404 页面
【发布时间】:2012-08-07 01:15:07
【问题描述】:

当用户在 URL 中键入 index.php 时,我需要显示 404 页面:

http://localhost:8080/site_name/index.php/home

我在 routes.php 中添加了这个 $route['index.php/(:any)'] = 'custom404';

这没有帮助;当用户键入http://localhost:8080/site_name/index.php/home 主页时出现而不是 404 not found。

知道当用户在 URL 中键入 index.php 时如何显示 404 页面吗?

我的 htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site_name/index.php/$1 [L]

【问题讨论】:

  • 您希望所有链接都转到 custom404 吗?
  • 仅当 index.php 存在时

标签: php codeigniter


【解决方案1】:

您可以一起从您的网址中删除 index.php。 CodeIgniter 默认启用它,但您可以轻松删除它,只需按照其用户指南中的指南进行操作: http://codeigniter.com/user_guide/general/urls.html

编辑:还应该知道 url 中的 index.php 不是你的控制器的一部分,它只是 CodeIgniter 放在那里的东西,所以你不能通过使用你的路由来删除它。

【讨论】:

  • 我可以使用 htacces 删除它,但我不希望它处于活动状态。换句话说,当用户手动输入时,他应该得到 404 页面
  • 是的,按照那里的说明修改 htaccess 文件,然后在 config.php 文件中更改 $config['index_page'] = 'index.php';按照该行上方的 cmets 中的指示,将“index.php”更改为引号中没有任何内容。
【解决方案2】:

将默认控制器设置为 custom404

$route['default_controller'] = "custom404";

或者你可以试试这个:

$route['index.php/^(.+)$'] = "custom404";

【讨论】:

  • 如果默认控制器设置为 custom404,即使是普通的 URL 也不会被路由到 404 页面吗?
  • 如果他愿意,他可以稍后覆盖它们。但我猜他只是想设置一些维护模式或其他东西。
  • 好吧,我不确定他想要什么。我以为他不希望用户明确访问 index.php。
  • 也许他可以尝试一些正则表达式而不是 (:any)
  • 是的,每当用户在 url 中键入 index.php 时,他应该被重定向到 404。我稍后会测试你的第二个解决方案
猜你喜欢
  • 2015-06-11
  • 2012-07-17
  • 2012-12-21
  • 1970-01-01
  • 2017-07-02
  • 2016-10-25
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多