@denism300

Можно ли заменить в ссылках символ через правила редиректа?

К примеру, на старом ссылки формата
site.ru/some_url_1/
site.ru/some_url_2/
site.ru/some_category_1/some_url_3/
site.ru/some_category_1/some_subcategory_1/some_url_4/

на новом
site.ru/some-url-1/
site.ru/some-url-2/
site.ru/some-category-1/some-url-3/
site.ru/some-category-1/some-subcategory-1/some-url-4/

Т.е., по сути, меняется только _ на -
возможно ли создать перенаправления одним правилом (если да, то каким)? или для каждой ссылки надо прописывать редирект?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dodo512
RewriteRule ^(.*)_(.*)/$ /$1-$2/ [R=301,L]
Тут только один символ за раз т.е. если символов более одного, то будет цепочка редиректов.
/some_url_1/ -> /some_url-1/ -> /some-url-1/

RewriteCond -$1-$2     ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4  ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4  ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4  ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4  ^(-)(.*)_(.*)|^-(.*)
RewriteRule ^(.*)_(.*)/$  /%2%1%3%4/ [R=301,L]

Заменит от 1 до 6 символов за один проход.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы