【问题标题】:CodeIgniter remove index.php displays 404CodeIgniter 删除 index.php 显示 404
【发布时间】:2012-07-17 08:21:07
【问题描述】:

我知道这个主题在这里已经被看到很多次了,但我没有看到他们中的任何一个在这里解决了我的问题......

我有一个使用 Codeigniter 的应用程序。我尝试删除 URL 中的 index.php,但今天看来我被诅咒了。

这是我的 config.php 文件中的内容:

$config['base_url']   = "http://".$_SERVER['SERVER_NAME']."/";
$config['index_page']    = "";
$config['uri_protocol']  = 'AUTO';

这是我的 .htacess(如 CI 建议的):

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

这样,我无法删除 URL 中的 index.php。事实上,它可以很好地删除它,但是我在屏幕上显示了一个漂亮的 404。

我检查了phpinfos(),看看mod_rewrite是否正确激活,这边没有问题。

**编辑**

我检查了我的 apache 日志,这就是我所拥有的:

[Wed Jul 18 12:27:08 2012] [error] [client 127.0.0.1] File does not exist: [PATH]/trunk/user

真正的路径应该是:

[PATH]/trunk/application/controllers/user

我看到所有这些东西都是在 index.php 文件中设置的,但似乎从未调用过...

有人可以建议我解决这个问题吗?

谢谢!

【问题讨论】:

  • 看看我对另一个类似问题的回答:stackoverflow.com/questions/11052294/…
  • 您输入的请求 URL 是什么?我假设您正在输入类似server.com/controllername/user 的内容,对吧?
  • 用户是我的控制器。但是是的,我正在调用类似主机/用户/登录的东西
  • @LeventeNagy 我已经尝试过本教程,但没有成功。

标签: php codeigniter mod-rewrite routes


【解决方案1】:

试试这个:

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

第一个条件确保请求不是针对有效文件,第二个条件确保请求不是针对有效目录。对文件系统中实际不存在的文件或文件夹的所有请求都是通过 index.php 发送的。

【讨论】:

  • 不起作用。仍然有我的 404。但是重定向还可以,它很好地删除了 index.php(例如我帖子中的 htaccess)。
  • 你没有删除 index.php 文件吧?
  • 问题已解决。它在 Virtualhost 的 apache 配置中。我添加了Options -Indexes FollowSymLinks MultiViews,它成功了!
【解决方案2】:

您不能阻止对 index.php 页面的访问,因为它是 CI 工作的主要页面。

【讨论】:

  • 他并没有试图阻止对它的访问,而是将其从 URI 中的显示中删除。
  • 实际上真正的错误是我的 404。index.php 正在从 URL 中很好地删除。
猜你喜欢
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 2012-10-30
  • 2019-04-06
相关资源
最近更新 更多