2011-04-12 22 views
0

我需要重寫以下類型的URL:的Apache重寫多參量

http://www.gocruise.co.uk/fusion/detailline3.pl?lineid=13&sid=6924&ccid=Fred+Olsen

到:

http://www.gocruise.co.uk/fred-olsen

使用Apache重寫規則。我一直試圖儘快處理這些重寫,但已經耗盡時間。任何幫助都感激不盡。

(主位IM掙扎是如何管理多個參數)

+0

您是否建議您將要將'...&ccid = John-Smith'重定向到'/ john-smith'?另外,你對剩下的參數有什麼打算?將它們附加到重定向的URL - '/ fred-olson?lineid = 13&sid = 6924'? – clmarquart 2011-04-12 16:42:09

+0

是的,即時消息暗示,只要其他參數通過,他們可以消失(如果可能的話) – itsphil 2011-04-13 08:21:04

回答

0

您可能需要其他方法:請求/fred-olsen即可進入,並且您希望將用戶重定向到更長的URL 。這是非常簡單的:

# in the Server Configuration or VHost Configuration: 
RewriteRule ^/fred-olsen$ /fusion/detailline3.pl?lineid=13&sid=6924&ccid=Fred+Olsen [R=301,L] 

或:

# in the .htaccess file of the DocumentRoot 
RewriteRule ^fred-olsen$ fusion/detailline3.pl?lineid=13&sid=6924&ccid=Fred+Olsen [R=301,L] 
0

好了,下面的規則應該做什麼你問。其他兩個參數將在查詢字符串中發送。唯一的另一種方法是將它們添加到網址中,它看起來並不是您想要的。

# http://www.gocruise.co.uk/fusion/detailline3.pl?lineid=13&sid=6924&ccid=Fred+Olsen 
# redirects to -> 
# http://www.gocruise.co.uk/Fred-Olsen?lineid=13&sid=6924 

RewriteEngine On 

RewriteCond %{REQUEST_URI} /fusion/detailline3.pl 
RewriteCond %{QUERY_STRING} (.*)&ccid=(\w*)\+(\w*)$ 
RewriteRule (.*) /%2-%3?%1 [L,R=301]