@unitours
Начинающий web-админ

Внутренний редирект без реврайта. Как это сделать в .htaccess?

Существует сайт например site.ru. Настроил днс и апач для динамических поддоменов.
Добавил правило в .htaccess -
RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^sub\.site\.ru [NC]
RewriteRule (.*) new.site.ru/admin [L]

RewriteCond %{HTTP_HOST} ^(.+)\.site/? [NC]
RewriteRule (.*) site.ru [L]

После этого все заработало следующим образом. Если ввести любой поддомен от балды -все шлет на гл. страницу сайта.
Если набрать sub.site.ru до редиректит на new.site.ru/admin/.
Но задача была следующая, что-бы когда набираешь sub.site.ru должен редиректить на new.site.ru/admin НО в адресной строке браузера должен оставаться sub.site.ru и соответсвенно все запросы для sub.site.ru/afisha(например) -должны работать.
Возможно ли вообще все это сделать в htacces или мне копать в другую сторону?
  • Вопрос задан
  • 1908 просмотров
Решения вопроса 1
@unitours Автор вопроса
Начинающий web-админ
Спасибо за ответ! Решил следующим образом.

Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^sub\.site\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/sub
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.site\.ru(.*) admin/$1/$2

Теперь отлично открывается -по sub.site.ru - site.ru/admin и в адрессной строке по прежнему sub.site.ru. Т.е пустые запросы заработали как надо. Но теперь нужно что бы например по sub.site.ru/afisha открывался site.ru/afisha, а открывается site.ru/admin/afisha. Попробую сделать как написал Вадим Назаров в посте выше. А что конкретно надо писать в этом rout.php?

Решилось все в htaccess - следующим образом.

RewriteEngine on

Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/(.+)
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^sub\.site\.ru(.*) admin/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nvadim
@nvadim
Программист 1С-Битрикс
А поддомены с одним докрутом?

В таком случае необходимо, чтобы какой-то файл, например rout.php у вас отвечал за маршрутизацию запросов.
Далее пишите:
RewriteRule . rout.php
Все запросы должны проходить через этот файл.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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