2013-07-14 185 views
1

我想在apache2 conf中寫一些重寫規則,它們不起作用 以下是我在apache conf中的虛擬主機塊。我的操作系統是Ubuntu的12.04服務器版apache2重寫規則不起作用

DocumentRoot /var/www/xyz 

    <Directory /> 
      Options FollowSymLinks 
      AllowOverride None 
    </Directory> 
    <Directory /var/www/xyz> 
      Options Indexes FollowSymLinks MultiViews 
      #AllowOverride None 
      AllowOverride All 
      Order allow,deny 
      #Order deny,allow 
      allow from all 
    </Directory> 

我有一些重寫規則.htaccess文件如下

ReWriteEngine on 
RewriteRule ^/matchV/(.*) http://host:8080/$1 
RewriteRule ^/other/(.*?)$ /httpdcontent/$1

重寫模塊與Apache啓用。

有人可以告訴我,如果我失去了什麼。

感謝,

桑迪普

回答

0

首先,美元符號似乎缺少在第一個規則。 然後,我會建議在「調試」情況下使用[L]。這樣,當時只需要修正一條規則。

如果您需要檢查重寫的方式,您需要查看日誌文件/var/log/apache2/error.log和/var/log/apache2/access.log。他們會告訴你服務器試圖處理什麼URL,以及它如何失敗。從這個角度來看,你應該能夠看到缺少的東西,或者什麼是「太多」。

從我看到的情況來看,我認爲它與重寫基地有關。您的Web服務器根目錄可能位於/ var/www,並且虛擬主機的目錄是/ var/www/xyz。我想你可以使用類似修復它...

RewriteBase /xyz 

不管怎麼說,編輯配置,並沒有停止檢查日誌。從那裏,您將看到服務器嘗試處理的URL /文件,並且您應該能夠更正它使用的路徑。

+0

到底在配置rewritebase的地方? – Sandeep

+0

根據您的覆蓋設置,可以在.htaccess文件中完成此操作。 –