所以我对.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';
所以我尝试在apps.myserver.com/my_app等链接上将该项目上传到debian服务器。我把我的应用程序放到文件夹var / www / my_app。但诀窍在于它不起作用。
我尝试将uri_protocol更改为所有5个选项,但没有更改。我也尝试将.htaccess文件放到var / www而不是var / www / my_app但是没有改变。
当我尝试访问没有index.php前缀的控制器时,我一直收到那个愚蠢的404 Not Found错误。
有什么想法吗?
编辑:我在服务器上检查了phpinfo,发现mod_rewrite在加载的模块中。
答案 0 :(得分:0)
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问题的信息。