Apache-2.2

Mod rewrite htaccess 在舊伺服器上工作,而不是在新伺服器上

  • April 13, 2014

我有以下 .htaccess 文件,它在我的舊主機上執行良好。我轉移到一個 AWS 實例(Ubuntu 12.04 LTS),它不再完全工作:

<IfModule mod_rewrite.c>
   RewriteEngine On

   RewriteCond %{HTTPS} !=on
   RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

   RewriteCond %{REQUEST_URI} ^system.*
   RewriteRule ^(.*)$ /index.php?/$1 [L]

   RewriteCond %{REQUEST_URI} ^application.*
   RewriteRule ^(.*)$ /index.php?/$1 [L]

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
   ErrorDocument 404 /index.php
</IfModule> 

我知道 rewrite 已安裝,因為這部分工作 - 它確實將 HTTP 請求發送到 HTTPS。此外,它確實顯示在正在執行的模組列表中。但是,我不能再使用沒有 index.php 的 URL,因為它全部顯示為 404。由於這是一個已經執行的站點的精確副本,我想我在安裝 apache 時一定做錯了什麼,但我無法想像是什麼。

儘管很酷的孩子們在沒有解釋的情況下投票否決了這個問題,但我還是設法弄清楚了。問題在於,由於它是 HTTPS,因此將 /etc/apache2/sites-enabled/default 中的 AllowOverride 更改為 All 不起作用。在這種情況下,您需要編輯 default-ssl。

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