2015-06-23 80 views
1

我的網站用來產生這樣的網址:重定向特定的URL變量

/data.php?s=1432862823&type=basic 

我已經修改了程序,以便產生新的網址是:

/d.php?s=1432862823&t=basic 

由於一些人有書籤的舊網址我想寫一個重寫規則,讓他們到新的網址。

我已經不是這個至今:

RewriteEngine on 
RewriteRule "^/data\.php$" "/d.php" 

,但我無法弄清楚如何計算的變量。

+0

是的,使用重寫/重定向。 IIS:https://technet.microsoft.com/en-us/library/cc732969(v=ws.10).aspx Apache:http://httpd.apache.org/docs/2.4/rewrite/remapping.html – chris85

+0

謝謝,我正在使用apache並讀取您發送的文檔。從上面的例子可以看出這是正確的:'code'RewriteEngine on RewriteRule「^/data \ .php?member = $」「/d.php?m=」'code' – Ron

+0

用代碼更新你的問題已經寫了。 – chris85

回答

1

試試這個:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^s=([^&]+)&type=([^&]+) [NC] 
RewriteRule ^data.php$ /d.php?s=%1&t=%2 [NC,R,L] 

這將外部重定向請求:

/data.php?s=foo&type=bar 

/d.php?s=foo&t=bar 
+1

非常棒!非常感謝你的工作,就像一個魅力。 只有一點點改變,我注意到我必須做出。類型變量有兩個值「basic」或「pro」。我已經改變了基本b和親p。 請你能告訴我如何將這個寫入重寫中。 換句話說/data.php?s=1432862823&type=basic將不得不成爲/d.php?s=1432862823&t=b – Ron

1

編輯:我道歉,我現在才發現您已將type參數更改爲t。因此,除非查詢字符串參數沒有更改的URI,否則此解決方案不適合您的需求。我在這裏留下這個答案,以便其他人可以從中學習 - 你會驚訝有多少人不知道查詢字符串會自動轉移到新的目的地。因此,斯塔肯的答案是正確的答案。


你可以按照Starkeen的解決方案,具體檢查查詢字符串,並明確地把它添加到d.php。另外,爲了簡單起見,你可以只使用這樣的:

RewriteEngine on 
RewriteRule ^data.php$ /d.php [R=302,L] 

查詢字符串將自動從data.php轉移到d.php,你會被重定向相應。

要使瀏覽器和搜索引擎永久性地重定向並緩存,請將302更改爲301