2013-01-13 18 views
1

我想將舊域中的所有請求重定向到新域的主頁(根站點)。我認爲這將有工作:將所有域的所有站點重定向到新域,但不包含查詢字符串

RewriteEngine On 
RewriteRule ^(.*)$ http://newdomain.com/ [R=301] 

(參見:.htaccess redirect all pages to new domain),但一個奇怪的原因,當我嘗試例如訪問URL www.olddomain.com/faq/pdf.php?cat=7 & id = 93 & artlang = de我重定向到www.newdomain.com/?cat=7 & id = 93 & artlang = de。可能是什麼問題呢?

在過去,我有一些問題,因爲這個領域是一個子目錄(如附加域)我的新的主域名,但在主域的.htaccess我有一個:

RewriteCond %{HTTP_HOST} ^([^.]+\.)*olddomain\.com 
RewriteRule .* - [L] 

其中禁用這種類型的錯誤。任何其他想法?幾小時後我正在嘗試這個。

編輯:我google了,當我得到的問題是查詢字符串。

+0

我沒有在您的重定向網址中看到任何$$$ s,那就是問題所在。 –

+0

對不起,我不明白你的意思? – Andy

回答

2

如果要重定向到您的新域名沒有路徑和查詢字符串,你必須附加一個空的查詢字符串

RewriteEngine On 
RewriteRule .* http://newdomain.com/? [R=301,L] 
+0

這正是我想要的,但它不起作用,仍然傳遞查詢字符串。我知道這很奇怪,但我無法找到問題的根源。 – Andy

+0

@Andy請確認您的目標網址是否有最終的??我只是在我的環境中測試了它,它與最終的'?'一起工作。 –

+0

我有一個「/?」在我的網址結尾。但它仍然保持查詢。有沒有可能是我的鏈接問題中提到的apache錯誤,或者這與它有什麼關係?我也使用了Saluman的變體。 – Andy

1

更新:

RewriteEngine On 
RewriteCond %{HTTP_HOST} (?:www\.)?oldomain\.com [NC] 
RewriteRule ^(.*)$ http://newdomain.com/? [R=301,L] 

更新爲例,不作爲答案。

+0

謝謝,但我的目標是不傳遞URL的其餘部分。我的問題是它會自動通過。 – Andy

+0

好的。把它倒過來。嘗試添加'DPI'標誌。像這樣[R = 301,L,DPI],看看會發生什麼。 –

+0

@Salman非常感謝。我只是在問題中複製粘貼規則,並沒有注意到「L」丟失。 –

1

mod_rewrite將查詢字符串附加到重寫的URL 如果沒有指定查詢字符串。添加一個空的查詢字符串,以避免該問題(加入?就足夠了):

RewriteEngine On 
RewriteRule ^(.*)$ http://newdomain.com/? [R=301,L] 

而且閱讀有關QSA標誌。

+0

感謝您與QSA的鏈接。問號解決了問題。 – Andy

相關問題