2016-03-18 49 views
1

大約一週之內,我們必須在一個新的域名上使用網站。但我們不希望每個人都得到404,所以我們想要重定向每個人。htaccess失去參數,但保持可變

我們的問題是其次,

舊的鏈接:http://www.example.com/one/detail?id=12345-54321-21345-32145-43215
新鏈接:http://www.newpage.com/one/12345-54321-21345-32145-43215/

所以我們想要的僅僅是 '12345-54321-21345-32145-43215',沒有「細節?=」

我們已經嘗試了很多東西,但由於某種原因,我們不能失去的‘細節'=’

我一直試圖在本地的,

NEWPAGE具有以下的htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

示例頁面已經改變了很多次試圖找出什麼,這將是無用的發佈吧..

編輯:這兩個網站上生活是wordpress網站 編輯2:細節?=改爲細節?編號=因爲我制定了錯誤的。

答案適用於以前的問題。我試圖將其更改爲

RewriteCond %{QUERY_STRING} ^(?:id)?=([0-9-]+)$ 
RewriteRule ^one/detail/id$ http://newdomain.com/one/%1/? [NC,L,R=301] 

但這不起作用。我怎樣才能解決這個問題? (?或者我應該只是創建了一個新的問題,爲此)

+0

您的重寫不會執行客戶端重定向 - 它純粹是內部服務器端重寫。你需要一個'[R = 301]',這樣客戶端的地址欄中的url就會被更改。 –

回答

2

在你的htaccess,添加:

RewriteCond %{QUERY_STRING} ^(?:detail)?=([0-9-]+)$ 
RewriteRule ^one/detail$ http://newdomain.com/one/%1/? [NC,L,R=301] 

這將重定向到/one/detail?=12345-54321-21345-32145-43215/one/12345-54321-21345-32145-43215/一個HTTP 301 code(永久移動)。

UPDATE:重定向default?id=,而不是default?=你可以只包括在表達式中id

RewriteCond %{QUERY_STRING} ^(?:detail)?id=([0-9-]+)$ 
RewriteRule ^one/detail$ http://newdomain.com/one/%1/? [NC,L,R=301] 

這將重定向到/one/detail?id=12345-54321-21345-32145-43215/one/12345-54321-21345-32145-43215/一個HTTP 301 code(永久移動)。

+0

嘿,那裏,雖然你的答案完全爲我工作,但現場有點不同(完全是我的錯)。我編輯了這個問題,希望你能對此提供一些見解/答案。 – Evergetic

+0

答案已更新,以包含「detail?id ='而不是'detail?='的示例。你想在第一個表達式(括號對)之外使用'id'。 – Egg

+0

非常感謝!這工作! – Evergetic

相關問題