Как сделать редирект в .htaccess?

Всем привет. Нужно сделать редирект в .htaccess

Сайт стоит на wordpress. По дефолту прописан вот твкой редирект

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress


При переходе на страницу intaxi.si/app с iPhone нужно редиректить на AppStore, а с Android соответственно в Google Play.

Прописываю вместо верхнего кода

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} (?i:midp|iphone)
	RewriteRule ^app$ https://itunes.apple.com/si/app/id1208514669 [NC,L]

RewriteCond %{HTTP_USER_AGENT} (?i:midp|android)
	RewriteRule ^app$ https://play.google.com/store/apps/details?id=com.yta.passenger.intaxi [NC,L]

	RewriteRule ^app$ http://intaxi.si [L]
</IfModule>

# END WordPress

Все работает, редирект нормальный, НО перестают работать подстраницы (смотри в меню сферху)

А когда соединяю верхний и нижний код вместе, редирект НЕ работает и просто открывается страничка intaxi.si/app

Подскажите как правльно все сделать, чтобы и подстраницы работали и редирект! Спасибо!
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
gzhegow
@gzhegow
Думал, стану умнее, когда адаптируюсь, но нет
В верхнем коде написано следующее:

0. Базовый урл - наклонная черта
1. Если URL - index.php - не трогать и обработать как есть
2. Если такой файл, как требуется в URL отсутствует и такой директории нету - то оставить адрес как есть, но выдать пользователю файл index.php

В нижнем коде написано

1. Если URL целиком равен app в любом регистре и юзер агент - айфон - отправить на Аппстор
2. Если URL целиком равен app в любом регистре и юзер агент - андроид - отправить на ГуглМаркет
3. Если URL целиком равен app в нижнем регистре - перебросить его на новый хост

Первый код передает расчет маршрута вордпрессу
Второй код отправляет устройства в тучу, а вордпресс не обрабатывает совсем.

Когда они вместе:
1. Во втором коде не хватает [R] чтобы это были таки редиректы, хотя Хост вроде как все равно делает редирект
2. Если ты поставишь код вордпресса сверху - то URL никогда не будет app, т.к. к моменту как разбор дойдет до переадресации на апсторы - урл будет уже index.php, а не /app - запердоль код вордпресса вниз
3. Так же не забывай что htaccess работает по кругу. Когда заканчивается правило буквой [L] или же достигается конец документа - хтацесс пробегает все правила еще раз, чтобы убедится, что больше ни одного правила не подходит под то, что получилось. И только если ни одно правило не сработало - выдается результат, иначе процесс повторяется и снова еще один круг.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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