Как правильно настроить подмену в .htaccess?

Есть путь на старом сайте
/дизайн/логотип

на новом сайте этот путь выглядит так
/дизайн-логотип

Необходимо настроить htaccess так, что бы переходя на старый url пользователь не видел подмены адреса, но по факту переходил на новый

Мой код, который не работает. (аналогичный код без кириллицы работает)

RewriteEngine on
RewriteBase /~quux/
RewriteRule ^%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD-%D0%BB%D0%BE%D0%B3%D0%BE%D1%82%D0%B8%D0%BF$ %D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD/%D0%BB%D0%BE%D0%B3%D0%BE%D1%82%D0%B8%D0%BF


Благодарен буду за любую помощь.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
SynCap
@SynCap
Делаю интернет с 1998 года
В RewriteRule уберите $, как минимум. Или регэксп переписать по-другому:
RewriteRule ^\%D0\%B4\%D0\%B8\%D0\%B7\%D0\%B0\%D0\%B9\%D0\%BD-\%D0\%BB\%D0\%BE\%D0\%B3\%D0\%BE\%D1\%82\%D0\%B8\%D0\%BF(/?.*)$ \%D0\%B4\%D0\%B8\%D0\%B7\%D0\%B0\%D0\%B9\%D0\%BD/\%D0\%BB\%D0\%BE\%D0\%B3\%D0\%BE\%D1\%82\%D0\%B8\%D0\%BF$1

Обязательно нужно заэкранить %, вот так: \%, или даже вот так: \\%. Был случай, когда пришлось ставить аж 4 бэкслэша! Дело в том, что символ % в RewriteRule имеет собственное значение.
Прямой зависимости количества слэшей от версии Апача я не обнаружил, видимо зависит от версии библиотеки по работе с регекспами, с которой конкретная сборка компилируется. Особенно актуально для LINUX систем, где Апач собирается "на месте" или готовится "умельцами" для покладки в репозитории.
Если Апач настроен на дефолтный utf-8, и версия не ниже 2.2.1, и файл .htaccess сохранен в utf-8, то правило можно записать и так:
RewriteRule ^дизайн/логотип(/?.*)$ дизайн-логотип$1

Или так:
RewriteRule ^дизайн/логотип дизайн-логотип

Подробнее: httpd.apache.org/docs/2.4/en/rewrite/intro.html
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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