2010-03-16 102 views
1

我需要一個網址「/ServiceSearch/r.php?n=blahblah」,並將其轉到「/ search/blahblah /」,以便它在瀏覽器中顯示爲「/ search/blahblah」,但我真的希望它真的要去「r.php?n = ServiceSearch & n = blahblah」...htaccess,連續兩次重寫?

所以我想我需要重寫第一個URL「/ServiceSearch/r.php? n = blahblah「,然後第二個網址」/ search/blahblah /「,第三個,」r.php?n = ServiceSearch & n = blahblah「。

嗯,我知道這是錯的,但這是我最好的猜測。我真的很掙扎着。

回答

1

嗯,我知道這是不對的

不,這其實正確的做法。像下面的東西應該工作:

RewriteRule /ServiceSearch/r.php?n=(.*)$ /search/$1 [R] 
RewriteRule /search/(.*)$ /r.php?n=ServiceSearch&n=$1 [L] 

這裏,(.*)捕獲可變部分(「blablabla」)並將其插入到經由$1更換。最後的標誌表示第一個查詢應該是HTTP重定向([R]),即客戶端的瀏覽器將被指示重定向到該地址。而第二個重定向將是最後[L] - 它也是而不是 HTTP重定向,因爲我們沒有指定;重定向是在服務器端處理)。嚴格地說,[L]標誌不是必需的,但如果您稍後添加更多重寫規則,它將防止不必要的干擾。

+0

啊我明白了。這真的很有用:]。 但是我仍然有問題:[。 是否可以像[R = 301]一樣執行301重定向? 此外,這是我現在的確切代碼: RewriteRule /ServiceSearch/?profession=(.*)$/search/$ 1 [R = 301] RewriteRule /search/((*)$/r.php ?N = ServiceSearch&N = $ 1 [L] 它仍然保持所有地址: /ServiceSearch /職業=會計師和FTYPE =服務 同樣的..是不是因爲FTYPE =服務的?如果可能,我很高興忽略這一點。 – 2010-03-16 10:25:26

+0

唉,評論不允許換行符:[ – 2010-03-16 10:25:58

+0

@Matthew:關於你的第一個問題:是的,這是絕對有可能的,你甚至有正確的語法。關於第二個問題:只需在'(。*)'部分後面刪除'$'。但請注意,這會從查詢中刪除&ftype = service'部分。 – 2010-03-16 10:40:56