Задать вопрос
@bossigorxxx

Как сделать с нижнего дефиса на средний?

Ребят, как сделать https://site.ru/product/tovarnaja_na_polke.html на https://site.ru/shop/tovarnaya-na-polke/ С _ на - регистр

И так на разных ссылках с нижнего на средний дефис

Сейчас у меня так
RewriteEngine On
RewriteCond ya$1 ^(ya)(.*)ja(.*)|^ya(.*)
RewriteRule ^product/([^/]+)\.html$ https://site.ru/shop/%2%1%3%4/ [R=301,L]
  • Вопрос задан
  • 33 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dodo512
Лучше направить запросы в отдельный скрипт и там уже выполнять замену и редирект.
RewriteRule ^product/([^/]+)\.html$ /replace.php [L]

/replace.php
<?php

if (preg_match('#^/product/([^/]+)\.html#', $_SERVER['REQUEST_URI'], $match)) {
        $str = $match[1];

        $str = str_replace('ja', 'ya', $str);
        $str = str_replace('_', '-', $str);

        header("Location: https://site.ru/shop/{$str}/", true, 301);
        die();
}


Если пытаться производить такую замену только средствами .htaccess будет громоздкий костыль.
spoiler
RewriteCond ya$1      ^(ya)(.*)ja(.*)|^ya(.*)
RewriteCond -%2%1%3%4 ^(-)(.*)_(.*)|^-(.*)
RewriteCond -%2%1%3%4 ^(-)(.*)_(.*)|^-(.*)
RewriteRule ^product/([^/]+)\.html$ https://site.ru/shop/%2%1%3%4/ [R=301,L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы