2013-12-10 50 views
1

我有一堆共享相同的重寫規則的網站。許多目錄相同的重寫規則

每個網站都有它自己的域名,在Apache中擁有自己的虛擬主機,以及擁有公共文件的自己的文件夾。這些文件夾使用/var/www/<domain>/模式,即。 /var/www/mydomain.com/

我的舊安裝程序在每個網站的文件夾中都包含單獨的.htaccess文件。但是,由於性能原因,新系統禁用了.htaccess,我需要將重寫移動到配置文件。

我不想創建一組具有完全相同重寫規則的<Directory>塊。我會創建一個將規則應用於/var/www/目錄中的所有網站的單個塊。

我嘗試下面的代碼:

<Directory /var/www/*> 
RewriteEngine On 
ErrorDocument 404 /404redirect.php 
RewriteRule ^image.php/$ /image.php [L] 
RewriteRule ^trial/$ /trial.php [L] 
RewriteCond %{REQUEST_URI} !\.(gif|jpg|jpeg|png|js|css|png|sqlite)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)/$ /player.php [L] 
</Directory> 

沒有什麼工作ErrorDocument其正常使用404redirect.php旁邊。所有其他規則不起作用,併產生404錯誤。

如果我直接使用它,這個相同的代碼完美地工作,即。在<Directory /var/www/mydomain.com/>

我在重寫中很新奇。有人能指出我如何才能做到這一點嗎?

非常感謝大家提前在此事上花時間。

回答

0

Apache配置的重寫規則需要引導斜線。試試這個代碼:

<Directory /var/www/*> 
RewriteEngine On 

ErrorDocument 404 /404redirect.php 

RewriteRule ^/image.php/$ /image.php [L] 

RewriteRule ^/trial/$ /trial.php [L] 

RewriteCond %{REQUEST_URI} !\.(gif|jpg|jpeg|png|js|css|png|sqlite)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^/player.php [L] 

</Directory> 

不要忘記在更改後重啓Apache。

+0

你說得對,現在它完美無缺,如預期的那樣。非常感謝Anubhava。 – user2989127

+0

不客氣,很高興它解決了問題。 – anubhava