我需要重寫以下類型的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掙扎是如何管理多個參數)
我需要重寫以下類型的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掙扎是如何管理多個參數)
您可能需要其他方法:請求/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]
除非lineid和SID總是將是相同的值,否則不給代碼很重要,我不知道認爲它會起作用。通常,網址重寫包括所有參數,因此您最終會得到類似http://www.gocruise.co.uk/13/6924/fred-olsen
好了,下面的規則應該做什麼你問。其他兩個參數將在查詢字符串中發送。唯一的另一種方法是將它們添加到網址中,它看起來並不是您想要的。
# 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]
您是否建議您將要將'...&ccid = John-Smith'重定向到'/ john-smith'?另外,你對剩下的參數有什麼打算?將它們附加到重定向的URL - '/ fred-olson?lineid = 13&sid = 6924'? – clmarquart 2011-04-12 16:42:09
是的,即時消息暗示,只要其他參數通過,他們可以消失(如果可能的話) – itsphil 2011-04-13 08:21:04