ASP.Net 301 перенаправляет и переписывает URL - PullRequest
0 голосов
/ 01 декабря 2010

Я только что изменил структуру URL-адресов страниц одного из моих сайтов, используя переписывание URL, и мне нужно перенаправить старую структуру на новую (для обработки старых ссылок, проиндексированных Google). Моя проблема в том, что я хочу перенаправить переписанный URL, а не реальный URL, и я не могу найти способ сделать это.

До изменений у меня были следующие URL:

RewriteRule ^ products / ([^ _ \ r \ n //] *) / ([^ _ \ r \ n //] *) / $ /products.aspx?cat=$1&subcat=$2 [NC, L]

После изменений у меня следующее:

RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *) / $ /products.aspx?cat=$1&subcat=$2 [NC, L]

Что я хочу сделать сейчас - это выполнить редирект 301 для URL, которые соответствуют

^ products / ([^ _ \ r \ n //] *) / ([^ _ \ r \ n //] *) / $ to ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *) / $,

т.е. иметь следующее правило:

RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *) / $ products - ([^ _ \ r \ n //] * ) - ([^ _ \ r \ n //] *) / [NC, L]

Приведенное выше правило приводит к следующей ошибке:

«Страница перенаправляется неправильно»

Есть ли способ сделать это с помощью .Net или с помощью правил перезаписи Url?

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 декабря 2010

Хорошо, я исправил проблему, используя следующее правило:

RewriteRule ^ products - ([^ _ \ r \ n //] *) - ([^ _ \ r \ n //] *) / $ /redir.aspx?url=/products-$1-$2/ [NC, L]

Страница redir.aspx записывает код 301 в заголовок и передает его на новый URL, которыйпередается в качестве параметра к нему.

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