2011-07-21 32 views
0

看起來這應該工作:mod_rewrite的404到另一個域,保持路徑

RewriteEngine On 
RewriteCond %{REQUEST_URI} !-U 
RewriteRule ^.*$ http://myotherdomain.com/$ [R=301] 

但是,事實上導致什麼都沒有被改寫。我只想捕捉這個域上的任何404並將它們轉發到另一個域(包含完整路徑&查詢字符串)。

回答

1

有趣的想法......但實施是錯誤的,不幸的是。這一次,其實工作原理:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) http://myotherdomain.com/$1 [R=301,L] 
  1. 你沒有捕獲組 - 你有.*但它不是「捕獲」 (.*),因此它不能在以後通過$1引用。

  2. 您沒有背部參考(在我們的情況下爲$1) - 只有$它自己的符號。

+0

這是有幫助的,但仍然不正確;使用這段代碼,請求加載HTML頁面,但沒有關聯的內容(圖像,CSS,JS);他們 - 所有 - 重定向,即使所有這些文件都在那裏。 – Nick

+0

@Nick不幸的是,你誤解了它是如何工作的。假設你請求'http:// example.com/nothere.php',它會被重定向到'http:// myotherdomain.com/nothere.php'。現在所有的CSS/JavaScript /圖像都是相對於頁面或網站根目錄的,除非你使用了HARDCODED FULL DOMAIN NAME。如果您擁有'',則將從CURRENT DOAMIN請求圖片,重定向後圖片將爲'http:// myotherdomain.com/logo.php'。如果你有'',那麼將從原始域請求圖像。 – LazyOne

+0

@Nick最好的方法 - 如果你不確定,並認爲我錯了 - 是提供一個在線的例子(我可以檢查自己,看看它是如何編碼的頁面)。如果你腦海中有完全不同的東西,那麼你的原始問題就不能很好地表達出來 - 因爲我的答案是回答你最初的問題。 – LazyOne

相關問題