Я пытаюсь перенаправить некоторые 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
, )
Надеюсь, кто-нибудь сможет мне помочь.
решение1
Для уточнения Ваших требований:
/first-second/text-to-keep-removethis
Следует перенаправить на:
/second/first/text-to-keep
Где
first
и содержат только строчные буквы a-zsecond
.removethis
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]
TheRewriteRule
шаблон(первый аргумент) — это регулярное выражение, которое сопоставляется только с запрошенным URL-путем, без префикса слеша.
В$n
заменаstring — это обратные ссылки на соответствующую группу захвата (подшаблон в скобках) вRewriteRule
шаблон.
Любая строка запроса, присутствующая в исходном запросе, будет передана без изменений. Если какая-либо строка запроса должна быть удалена, добавьте флаг QSD
(Отменить строку запроса).
Обратите внимание, что это временное (302) перенаправление. Измените на 301 (постоянное) перенаправление — если это и есть намерение — только после того, как убедитесь, что это работает нормально.