由于htaccess而找不到页面

时间:2014-06-10 20:28:03

标签: php apache .htaccess codeigniter mod-rewrite

我已经尝试了几乎所有我能想到的东西,我基本上已经从我的项目(基本上测试)从Mac OS迁移到Windows OS webserver。当我从我的服务器访问任何其他页面时,我收到“找不到页面”错误,但是如果我添加index.php/location它会起作用,无论如何这里是我的一些设置:

最初我已经通过将这个:in_array('mod_rewrite', apache_get_modules())添加到条件语句来检查是否启用了mod_rewrite,条件语句响应为true所以我知道mod_rewrite处于启用状态。

这是我的.htaccess文件,它位于我项目的主目录中(带有index.php):

<IfModule mod_rewrite.c>
    Options +FollowSymLinks 
    Options -Indexes 
    DirectoryIndex index.php 
    RewriteEngine on 
    RewriteCond $1 !^(index\.php|resources|images|css|js|robots\.txt|favicon\.ico) 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>

还尝试RewriteRule ^(.*)$ index.php/$1 [L]并将其写在<ifModule>标记之外。

以下是我的一些codeigniter设置:

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

我还尝试在index_page中加入index.php并尝试使用REQUEST_URI获取uri_protocol,似乎没有任何效果。

旁注:它在我的mac和linux(Raspberry Pi)上完美运行。

你能否提出任何替代方法或发现我错过的东西。

编辑: httpd.conf我做了以下

<directory />
  Options All
  AllowOverride All
</directory>

AllowOverride None的所有实例都已更改为AllowOverride All

以下内容已取消注释/启用:

LoadModule rewrite_module modules/mod_rewrite.so

1 个答案:

答案 0 :(得分:0)

请勿在php中触摸默认的.htaccess文件。

  1. 在codeigniter根目录中创建一个名为&#34; .htaccess&#34;
  2. 的新文件
  3. 将代码粘贴到此新文件中。
  4. RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /leo/index.php/$1 [L]
    

    保存它现在应该可以正常工作。