我需要重写以下类型的网址:
http://www.gocruise.co.uk/fusion/detailline3.pl?lineid=13&sid=6924&ccid=Fred+Olsen
成:
http://www.gocruise.co.uk/fred-olsen
使用Apache RewriteRule。我一直试图尽可能快地掌握这些重写,但已经没时间了。任何帮助将不胜感激。
(我正在努力解决的主要问题是如何管理多个参数)
答案 0 :(得分:0)
除非lineid和sid总是具有相同的值,否则它们对代码并不重要,我认为它不会起作用。通常,网址重写包含所有参数,因此您最终会得到类似http://www.gocruise.co.uk/13/6924/fred-olsen
的内容答案 1 :(得分: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]
答案 2 :(得分:0)
好吧,以下规则应该按照您的要求进行。其他两个参数将在查询字符串中发送。唯一的另一种方法是将它们添加到URL中,这似乎不是你想要的。
# 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]