Apache переписать с несколькими параметрами - PullRequest
0 голосов
/ 12 апреля 2011

Мне нужно переписать URL-адреса следующих типов:

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

в:

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

с использованием Apache RewriteRule.Я пытался справиться с этими переписками так быстро, как только смогу, но время истекло.Любая помощь будет принята с благодарностью.

(основной бит, с которым я борюсь, - это управление несколькими параметрами)

Ответы [ 3 ]

0 голосов
/ 12 апреля 2011

Возможно, вы хотите наоборот: поступает запрос /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 голосов
/ 13 апреля 2011

Хорошо, следующие правила должны делать то, что вы просите. Два других параметра будут отправлены в строке запроса. Единственный другой способ - добавить их в 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]
0 голосов
/ 12 апреля 2011

Если lineid и sid не всегда будут иметь одинаковые значения или они не важны для кода, я не думаю, что это сработает. Как правило, перезапись URL-адреса включает все параметры, поэтому вы получите что-то вроде http://www.gocruise.co.uk/13/6924/fred-olsen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...