我正在尝试删除 CodeIgniter URL 中的“index.php”。
我可以在我的 Mac(MAMP)上运行它,但无法在我的 Ubuntu(Lucid)托管服务器上运行它。
这个有效:mysite.com/index.php/home
但是这会产生 404 错误:mysite.com/home
我已遵循这个帖子并在我的.htaccess 文件中包括以下几行。
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
- 我已确认 Apache2 上已加载 mod-rewrite。
- .htaccess 文件位于 webroot (/var/www),这也是我的主要 index.php 所在的位置。
- .htaccess 文件权限为:-rwxrwxr-x
- 我已经针对 .htaccess 文件尝试了大约 20 个不同的已发布答案,因此我怀疑我托管的 Ubuntu(Lucid)服务器上的整体 Apache 配置有问题。
需要设置哪些其他 Apache 配置才能使 mod-rewrites 正常工作?我的 httpd.conf 文件是空的。
谢谢!
答案1
如果您在 .htaccess 文件上执行此操作,请确保至少启用AllowOverride FileInfo
并Options FollowSymLink
启用您的 Apache 配置文件。
关于 httpd.conf 为空的问题,只是因为您使用的是基于 Debian 的发行版,您应该寻找的地方是/etc/apache2/sites-available/default
(即默认虚拟主机配置文件)。主服务器指令位于/etc/apache2/apache2.conf
。
(哦!是的,您的测试用例运行良好)。
答案2
检查是否设置了 AllowOverride;一个简单的,暂时的:
Deny from all
在您的 .htaccess 中可以很好地作为测试用例。