2009-07-11 2 views
0

Мне нужно захватить некоторые старые URL-адреса моего сайта и сделать 301 переадресацию на новые, так как они уже проиндексированы и мы не хотим потерять релевантность после изменения. Старый URL-адрес на самом деле очень уродлив, и по какой-то причине все, что я пытаюсь сделать, чтобы переписать его, не работает. Вот оно:Mod_rewrite - как 301 перенаправить старый URL-адрес на новый

http://www.mywebsite.com/ExibeCurso.asp?Comando=TreinamentoGeral&codCurso=136&Titulo=Como%20Estruturar%20um%20Sistema%20Gerencial%20de%20Controles%20Organizacionais,13 

В принципе, мне нужно перевести его в нечто вроде:

http://www.mywebsite.com/curso/136 

От старого URL мне нужно проверить, если пользователь ввел «ExibeCurso.asp»; то я знаю, что я должен отправить его сюда:/curso. Я также должен захватить целое число, которое было в параметре querystring «codCurso» (136). Какое регулярное выражение я должен использовать для этого. Я использую ISAPI_Rewrite 3, который в основном реализует htaccess на IIS, поэтому не должно быть разницы в синтаксисе. Благодарю.

ответ

1

Попробуйте это правило:

RewriteCond %{QUERY_STRING} ^([^&]*&)*codCurso=([0-9]+)(&.*)?$ 
RewriteRule ^/ExibeCurso\.asp$ /curso/%2? [L,R=301] 

Но я не уверен, нуждается ли ISAPI Rewrite шаблона, чтобы начать с косой чертой.

+0

Привет, спасибо, мне удалось решить проблему, прежде чем видеть ваш пост, и это было очень похоже на ваш ответ. Большое спасибо! Кстати, меня всегда путают с RegEx. Что это делает ([^ &] * &) *? Сообщая системе выбрать что-либо, кроме a, а затем получить & перед параметром querystring codCurso? Благодарю. –

+0

гул, я думаю, что ISAPI Rewrite работает именно так ... Abraços. –

0

Off верхней части моей головы, что-то, как это должно работать:

RewriteRule ^ExibeCurso.asp(.*)$ http://www.mywebsite.com/curso/$1 [L,R=301] 

Это было бы, по крайней мере направить трафик/Curso/со всеми параметрами прилагается. Может быть, лучше обработать его оттуда.

Смежные вопросы