Я пытаюсь перенаправить некоторые URL-адреса, используя .htaccess
но безуспешно. Проблема в том, что мне нужно перенаправить две разные части URL-адреса.
Вот пример того, что мне нужно перенаправить:
example.com/huawei-reparatie/huawei-mate-7-reparatie
должен быть перенаправлен на:
example.com/reparatie/huawei/huawei-mate-7
Итак, что нужно сделать:
huawei-reparatie
в reparatie/huawei
-reparatie
в конце каждого URLЭто динамические URL-адреса, поэтому не только этот. Мне нужно перенаправить все эти URL-адреса для множества разных брендов (например, huawei
) и много разных устройств (например, huawei-mate-7
)
Я надеюсь, что кто-нибудь может мне помочь.
Чтобы уточнить ваши требования:
/first-second/text-to-keep-removethis
Следует перенаправить на;
/second/first/text-to-keep
куда
first
, second
и removethis
содержат только строчные буквы a-z.first
и second
разделяются одним дефисом.removethis
начинается с одного дефиса (который также удаляется) и всегда стоит в конце URL-пути.text-to-keep
- любая последовательность символов a-z и дефиса.Попробуйте следующее в верхней части корня .htaccess
файл, используя mod_rewrite:
RewriteEngine On
RewriteRule ^([a-z]+)-([a-z]+)/([a-z-]+?)-[a-z]+$ /$2/$1/$3 [R=302,L]
В RewriteRule
шаблон (первый аргумент) - это регулярное выражение, которое соответствует только запрошенному URL-пути без префикса косой черты.
В $n
в замена строка - это обратные ссылки на соответствующую группу захвата (заключенный в скобки подшаблон) в RewriteRule
шаблон.
Любая строка запроса, присутствующая в исходном запросе, будет передана без изменений. Если какая-либо строка запроса должна быть удалена, добавьте QSD
флаг (Отмена строки запроса).
Обратите внимание, что это временное (302) перенаправление. Переходите на 301 (постоянный) редирект - если это намерение - только после того, как вы подтвердите, что это работает нормально.