2012-09-26 45 views
0

我想讓Apache總是打開一個關於來自所有子域的404錯誤的signle頁面。Apache跨域404

的問題是,我的子域位於的public_html子文件夾,並因此具有不同的根路徑。

例如主域這個工作得很好:

ErrorDocument 404 /Error/404.html 

Error文件夾和主域名分別位於的public_html。

但是,對於論壇子域名,位於public_html/forum/上面的根路徑沒有,並且它實際上查找不存在的public_html/forum/Error/404.html

我試圖重寫規則論壇文件夾,但它沒有工作之一:

ErrorDocument 404 /../Error/404.html 

看來,它不能去根文件夾下面由於某些原因。

任何想法如何我可以引用主頁和子域的相同頁面,而不觸發重定向? (例如:http://mysite/Error/404.html會做到這一點,但也會改變我不想要的頁面的url地址)

回答

1

似乎它不能在根文件夾下面出於某種原因。

因爲能夠遍歷文檔根目錄上面是非常,非常嚴重的安全隱患。如果您的網絡服務器遭到入侵,人們將能夠在整個服務器上的任何位置提供各種文件。

如果您訪問服務器的配置,你可以設置別名爲/Error文件夾。例如,在你的論壇子域名的虛擬主機配置,你可以添加:

Alias /Error /path/to/public_html/Error/ 

這樣,當你去http://forum.yourdomain.com/Error/404.html你實際上是在尋找http://main.yourdomain.com/Error/404.html。然後,您可以使用:

ErrorDocument 404 /Error/404.html 

與您的論壇子域一樣正常。

但是,如果你沒有訪問到你的服務器/虛擬主機配置,你需要使用的mod_proxy和mod_rewrite的。因此,在public_html/forum/的htaccess文件中,將這些添加到頂端:

RewriteEngine On 
RewriteRule ^Error/(.*)$ http://main.yourdomain.com/Error/$1 [L,P] 
+0

謝謝! 'Mod代理'或'P標誌'是我所需要的。 – Anonymous