mod-rewrite 在 Ubuntu 上不起作用

mod-rewrite 在 Ubuntu 上不起作用

我正在尝试删除 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 FileInfoOptions FollowSymLink启用您的 Apache 配置文件。

关于 httpd.conf 为空的问题,只是因为您使用的是基于 Debian 的发行版,您应该寻找的地方是/etc/apache2/sites-available/default(即默认虚拟主机配置文件)。主服务器指令位于/etc/apache2/apache2.conf

(哦!是的,您的测试用例运行良好)。

答案2

检查是否设置了 AllowOverride;一个简单的,暂时的

Deny from all

在您的 .htaccess 中可以很好地作为测试用例。

相关内容