我已经尝试了几乎所有我能想到的东西,我基本上已经从我的项目(基本上测试)从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
答案 0 :(得分:0)
请勿在php中触摸默认的.htaccess文件。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /leo/index.php/$1 [L]
保存它现在应该可以正常工作。