【问题标题】:Codeigniter and .htaccess file to ignore index.phpCodeigniter 和 .htaccess 文件忽略 index.php
【发布时间】:2013-07-10 06:18:49
【问题描述】:

所以我在使用 .htaccess 文件和 codeigniter 时遇到了一个奇怪的问题。我的本地机器上有一个 wamp 服务器,它可以按预期工作。我有像 wamp/www/my_app 这样的文件夹,在 my_app 文件夹中我有像这样的 .htaccess 文件:

ErrorDocument 404 /index.php
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /my_app/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
   ErrorDocument 404 /index.php
</IfModule>  

在我的 config.php gile 我有:

 $config['base_url']='';
 $config['index_page']='';
 $config['uri_protocol']='AUTO';

所以我尝试将该项目上传到链接上的 debian 服务器,例如 apps.myserver.com/my_app。我将我的应用程序放入文件夹 var/www/my_app。但诀窍是它不起作用。

我尝试将 uri_protocol 更改为所有 5 个选项,但没有更改。我还尝试将 .htaccess 文件放入 var/www 而不是 var/www/my_app 但也没有任何变化。

当我尝试访问没有 index.php 前缀的控制器时,我不断收到那个愚蠢的 404 Not Found 错误。

有什么想法吗?

编辑:我检查了服务器上的 phpinfo,发现 mod_rewrite 在加载的模块中。

【问题讨论】:

  • 首先检查你的服务器上是否启用了 mod_rewrite,从顶部和底部发送删除此 ErrorDocuemnt 并注释掉 RewriteBase 并检查
  • 所以我注释掉除第 3 行和第 7 行之外的所有行,没有任何反应。这是否意味着我在服务器上没有重写模块,还是意味着它没有读取我的 .htaccess 文件?
  • 这是 CI 文档 RewriteEngine on RewriteCond $1 上的最小 htaccess 代码!^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L ]
  • 我完全尝试了你给我的代码,但没有效果,我检查了,所以我可以确认 mod_rewrite 已加载到服务器上。
  • 如果您有 wamp 服务器,只需在浏览器上键入 localhost,您将 phpinfo() 链接单击它,如果未加载,则在加载的模块下找到 mod_rewrite,然后您必须在您的 wamp 服务器中启用它,它真的很容易

标签: .htaccess codeigniter


【解决方案1】:

mod_rewrite 模块可以有几个不同的扩展。您的 Debian 服务器可能使用 mod_rewrite.so 而不是 mod_rewrite.c

也就是说,如果您知道 mod_rewrite 已启用,并且您的应用程序没有广泛分布并需要检查它,您可以安全地消除 if 检查。

您提到注释掉除第 3 行和第 7 行之外的所有内容 - 您注释掉了 RewriteBase 定义,这破坏了一些东西。

尝试一些简单的事情,然后从那里开始工作:

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

此外,如果 .htaccess 很奇怪,您可以做的一种变体是将index.php 之后的所有内容更改为查询字符串。注意这里的?

RewriteRule ^(.*)$ index.php?/$1 [L]

您可能会也可能不会更改 CodeIgniter 中的 uri_protocol 配置设置。我的猜测是您特别不会,但它是为遇到 .htaccess 问题的其他人提供的信息。

【讨论】:

  • 好的,我尝试了所有建议的选项,但没有效果。我真的失去了它:S
猜你喜欢
  • 1970-01-01
  • 2012-09-16
  • 2013-10-21
  • 2012-08-15
  • 2012-09-20
  • 2019-04-06
  • 2013-03-07
  • 2013-11-03
  • 1970-01-01
相关资源
最近更新 更多