Apache-2.2

mod-rewrite 在 Ubuntu 上不起作用

  • June 5, 2015

我正在嘗試刪除 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 文件是空的。

謝謝!

AllowOverride FileInfo如果您在 .htaccess 文件上執行此操作,請確保至少啟用Options FollowSymLink您的 Apache 配置文件。

關於 httpd.conf 為空的主題,只是您使用的是基於 Debian 的發行版,您應該尋找的地方是/etc/apache2/sites-available/default(即預設的虛擬主機配置文件)。主伺服器指令位於/etc/apache2/apache2.conf.

(哦!是的,您的測試案例執行良好)。

檢查是否設置了 AllowOverride;一個簡單的臨時的:

Deny from all

在您的 .htaccess 中可以很好地作為測試案例。

引用自:https://serverfault.com/questions/186085