2011-12-09 64 views
12

我將一個域重定向到另一個域,但我想保留重定向中的路徑。例如,我想訪問www.example.com/services/education/page.html,但我的重定向會將它們帶到www.new-example.com/services/education/page.html。我在.htaccess文件中寫什麼來保存路徑「/services/education/page.html」?如何在重定向整個域的同時保留路徑

現在我有:

redirect 301 http://www.example.com/ http://www.new-example.com/ 

但我不知道是否可行與否(不能測試還沒有,因爲我在等待域詳細信息等)。我只想確定何時將網站投入使用。這是正確的還是我離開基地?

謝謝!

+0

在使用現有網域獲取您的網域詳情之前,您仍然可以進行測試,例如google.com甚至是不存在的,因爲你只想看到301重定向是在你想要的所有情況下發布的,同時保留你的路徑。 –

+1

Helicon有一個RegexTest應用程序,它允許您測試.htaccess條目。它甚至會根據您的輸入/測試爲您制定規則。 – Aaron

回答

22

這應做到:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !new-example.com$ [NC] 
RewriteRule ^(.*)$ http://new-example.com/$1 [L,R=301] 
+0

我.htaccess文件已經在它具有這個代碼(WordPress的):<!IfModule mod_rewrite.c> RewriteEngine敘述在 RewriteBase/ 重寫規則^索引\ .PHP $ - [L] 的RewriteCond%{REQUEST_FILENAME} -f 的RewriteCond %{REQUEST_FILENAME}!-d RewriteRule。 /index.php [L] 我需要這4行代碼給你嗎?或者我會有一個問題把RewriteEngine打開兩次(對於RewriteBase /是相同的) – jasonaburton

+0

如果它們已經存在於你的.htaccess中,則跳過前兩行 –

+0

這些重定向不起作用。在我的.htaccess中唯一的代碼發佈在我上面的評論中。有沒有理由不工作? – jasonaburton

5

嘗試加入您的example.com域的根目錄下以你的.htaccess

RewriteEngine On 
RewriteBase/

#for all requests to www.example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
#redirect them to new-example 
RewriteRule (.*) http://www.new-example.com/$1 [R=301,L] 
4

你原來的命令使用mod_alias Apache模塊,和它會工作,雖然你可能想更新到:

Redirect 301/http://www.new-example.com/ 

刪除確切當前(舊)域的域意味着指向該文件夾的所有域將被髮送到新域,從而使該單行腳本更健壯。

其他答案使用mod_rewrite Apache模塊。如果你已經安裝了這個軟件,那很好用,儘管它有4行以上的代碼。此外,mod_alias是「基本」包的一部分,所以應該在所有Apache服務器上,而mod_rewrite是可選的擴展,所以有些可能沒有。

+0

工作得很好。這似乎是最好的答案,因爲不依賴於mod_rewrite。 –

相關問題