2011-09-12 26 views
2

我只想在出現錯誤時重定向(服務器狀態503)。如果沒有錯誤,這是重定向腳本,它工作得很好:Mod重寫服務器狀態503,取決於URL

Redirect /abc https://www.abc.com/pqr.html 
Redirect /cde https://www.cde.com/pqr.html 

但是,這種重定向/ ABC到https:// www.abc.com/pqr.html在所有情況下。我只想在發生錯誤時重定向。這句法:

ErrorDocument 503 https://www.abc.com/pqr.html 

重定向503錯誤信息到https的所有URL:// www.abc.com/pqr.html。但是,我希望將具有503錯誤消息的/ cde重定向到https:// www.cde.com/pqr.html

有關如何執行此操作的任何線索?

+0

'cde'是一個物理文件夾嗎? – alexn

+0

@alexn,cde不是物理文件夾。它的URL部分,如google.co.in/music – Ujjwal

回答

0

這對我來說非常合適。在Apache論壇中得到了這個答案:

<VirtualHost x.x.x.x:80> 
    ServerName www.mysite.com 
    <Location /books> 
      ErrorDocument 503 http://www.mypartnersite.com/books 
    </Location> 
    <Location /music> 
      ErrorDocument 503 http://www.mypartnersite.com/music 
    </Location> 
    ... 
</VirtualHost> 
-1

好吧,讓我們先來了解ErrorDocument指令是無條件的,不能在.htaccess中繞過if cond then ErrorDocument表達式類型。

但是有一個解決方法來實現這一點。爲此,您需要使用mod_rewrite捕獲這些條件,並使用自定義錯誤代碼重定向。然後你可以爲你自己的自定義錯誤代碼提供ErrorDocument。對於前:

RewriteRule ^cde/invalidUrl - [L,R=425]  
ErrorDocument 425 https://www.abc.com/pqr.html 

這樣上面的ErrorDocument將隻影響/cde/*的URI,並不會影響其他的URI。

+0

Man,這可以通過使用 'Redirect/abc https:// www.abc.com/pqr.html' 'Redirect/cde https: // www.cde.com/pqr.html' 我在找的是隻在503錯誤的情況下重定向。只有在發生503錯誤時,重定向纔會顯示/ abc頁面。上述情況是,在服務器點擊/ cde 使用案例:如果google.co.in發生故障(503錯誤),重定向google.co,所有情況下重定向到abc.com/pqr.html。 in/music to saavn.in/music','google.co.in/talk to google.com/talk'。如果沒有503錯誤,**只顯示google.co.in/music和google.co.in/talk**。 – Ujjwal

+0

可能在你輸入一個長評論的時候,你並沒有在我的回覆中注意'R = 425',我的第一個陳述是說'ErrorDocument指令是無條件的......' – anubhava

+0

我注意到R = 425,但是我抱歉它不起作用。它將所有^ cde /重定向到abc.com,這不是用例。用例是,只有在出現503錯誤時,纔會重定向。但是,上述代碼在所有情況下都會重定向。我已經嘗試並測試了您的代碼,並且我很遺憾地告訴它它不適用於上述用例。請仔細瞭解該用例。如果您有任何疑問,請告訴我。 – Ujjwal