我正在使用.htaccess删除我的CodeIgniter项目的index.php。我让它在localhost中正常工作但在我的托管中失败了。我托管给我的结构是这样的:
/
-- domains
---- mydomain.com
------ public_html
-------- .htaccess
-------- (the rest of my CI site)
在localhost中我的.htaccess是这样的:
RewriteEngine on
RewriteBase /myCIfolder/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
我尝试过:
RewriteBase /
RewriteBase /domains/
RewriteBase /domains/mydomain.com/
RewriteBase /domains/mydomain.com/public_html/
RewriteBase /mydomain.com/
RewriteBase /mydomain.com/public_html/
RewriteBase /public_html/
但我无法使其发挥作用。我已经向我的主机提供商询问了他们说已经启用了MOD_REWRITE。
非常感谢任何想法。
编辑1
我的索引页面(mydomain.con - 主控制器,索引函数)正在正确加载,但任何其他控制器都失败。
使用
RewriteBase /
它显示了错误:
未指定输入文件。
任何其他RewriteBase显示:
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。
请与服务器管理员webmaster@mydomain.com联系,告知他们错误发生的时间,以及可能导致错误的任何操作。
服务器错误日志中可能提供了有关此错误的更多信息。
此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。
mydomain.com端口80上的Apache / 2服务器
答案 0 :(得分:1)
由于@Fuzzzzel的评论引导我this,我已经解决了这个问题。
所以我将.htaccess改为
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
它终于奏效了。谢谢! :)