Разделить сайты в .htaccess

Добрый день!

Вот тут Василий выложил замечательный плагин для создания двух сайтов в одной админке. К сожалению там комментарии отключены и написать вопрос нет возможности.

По примеру все сделал, все работает, но осталась один вопрос:

Как развести ссылку в /index.php что бы каждая ссылалась на свой сайт!? Если в стандартном, то эта строчка выглядит следующем образом:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
Пробовал вот так, на первом отрабатывает, на втором перебрасывает на первый:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://%1/$1 [R=301,L]
Кто решил проблему, отпишитесь, спасибо!
Роман
22 ноября 2016, 05:45
modx.pro
1
2 527
0

Комментарии: 17

Максим
22 ноября 2016, 08:59
0
На сколько знаю, если используешь $1 или %1, значит нужно где-то что-то в скобки взять…
% — берется из RewriteCond
$ — берется из RewriteRule
    Роман
    22 ноября 2016, 09:04
    0
    Не знаю, я взял по примеру вот этого, это правило отрабатывает правильно:

    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
      Максим
      22 ноября 2016, 09:09
      0
      Вот я о том и говорил…
      %1 = (.*) из RewriteCond
      $1 = (.*) из RewriteRule

      А у тебя ничего в скобки не взято,
      т.е. на выходе у тебя вместо
      http://%1/$1
      получается
      http:///
        Роман
        22 ноября 2016, 09:19
        0
        Что т не могу найти нужного описания для правки, к примеру вот тут больше упор за site.ru/##/## — а как написать мне переменную!?
          Максим
          22 ноября 2016, 09:55
          0
          Сразу оговорюсь, я сути вопроса не очень понял, точнее не вникал в данную тему разделения, я лишь к регуляркам придрался.

          Вот ты пишешь
          RewriteRule ^index\.php$ http://%1/$1 [R=301,L]

          $1, %1 — это что у тебя? Переменные? а откуда они значения берут?

          Тогда уж нужно писать как-то так:
          RewriteRule ^(index\.php)$ http://site.ru/$1 [R=301,L]
          тогда $1 будет равна index.php
            Роман
            22 ноября 2016, 10:33
            0
            Смотри в одной админке два сайта:

            Ты набираешь site.ru/index.php и попадаешь на site.ru
            На втором сайте набираешь mypage.ru/index.php и попадаешь на site.ru

            Нужно при наборе index.php перенаправляло в свою директорию

            Касательно того что я попробовал изначально, я просто попытался по этому примеру:
            ## Перевод с www на без www
            RewriteCond %{HTTP_HOST} .
            RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
            RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
            адаптировать это правило для себя
            ## Перенаправляем с index.php на /
            RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
            RewriteRule ^index\.php$ https://site.ru/ [R=301,L]
              Максим
              22 ноября 2016, 10:43
              0
              Не знаю, правильно или нет написано, но, как я думаю, логика примерно такая:
              RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
              RewriteRule ^(.*)$ https://site.ru/dir1/$1 [R=301,L]
              RewriteCond %{HTTP_HOST} ^www.mypage\.ru$ [NC]
              RewriteRule ^(.*)$ https://site.ru/dir2/$1 [R=301,L]
                Роман
                22 ноября 2016, 13:26
                0
                Максим что то я не уловил логики что ты пытаешься сделать!

                У меня в одной админке два сайта, другими словами два домена = два сайта!

                Смотри, если в MODx не указать правило обработки
                ## Перенаправляем с index.php на /
                RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                RewriteRule ^index\.php$ https://site.ru/ [R=301,L]
                то при наборе site.ru/index.php будет открываться главная страница, идентичная просто site.ru

                Мне нужно развести site.ru/index.php и mypage.ru/index.php, что бы при наборе любого из указанных URL тебе перенаправляло в свою директорию, а именно site.ru и mypage.ru

                Что ты выше пытаешься сделать, я не совсем понял!
                  Максим
                  22 ноября 2016, 14:47
                  0
                  Я тоже не совсем понимаю что ты хочешь))
                  Во-первых, я изначально говорил про регулярки, то что ты их не совсем правильно используешь.
                  Во-вторых, как уже писал не особо вникал в тему (ссылку которую ты приводил).
                  В-третьих, я не могу понять про index.php. По-умолчанию / и так соответствует индексу и перенаправляет на index.html или index.php. Можно написать DirectoryIndex index.php.

                  Сейчас то у тебя как настроено? Два домена ссылаются на один и тот же файл index.php, расположенный в одной и той же директории на сервере?

                  Смысл то в том чтобы проверять название домена, если оно равно site.ru, перенаправлять на одну папку, если оно равно mypage.ru — на другую? Просто в таком случае я не пойму при чем тут index.php :))
                    Роман
                    22 ноября 2016, 14:59
                    0
                    Еще раз более подробно, смотри:

                    Вот есть решение: bezumkin.ru/sections/tips_and_tricks/2439

                    Сделал так же, теперь у меня в админке два сайта! К примеру:
                    site.ru
                    mypage.ru
                    Получается, что физически один движок, один и те же папки на два сайта!

                    Далее проблема:
                    если набрать:
                    site.ru/index.php
                    то попадаем на:
                    site.ru
                    если набрать:
                    mypage.ru/index.php
                    то попадаем на 
                    site.ru
                    Задача, в .htaccess написать условие, что бы при наборе
                    site.ru/index.php
                    или
                    mypage.ru/index.php
                    перенаправляло на самого себя, т.е. на :
                    site.ru
                    и соответственно
                    mypage.ru
                      Максим
                      22 ноября 2016, 15:56
                      0
                      Как я понял, сейчас у тебя стоит:

                      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                      RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

                      Поэтому он и перенаправляет
                      http://mypage.ru/index.php
                      на
                      http://site.ru/
                      , как и указано в RewriteRule.

                      Может быть в таком случае вообще убрать это правило?

                      Или можно попробовать написать:

                      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                      RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L]
                      Роман
                      22 ноября 2016, 16:21
                      0
                      Да не, вот это указал правило для обычного сайта
                      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                      RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
                      что вот это правило нужно адаптировать под свои нужды на два сайта

                      Это не работает к сожалению
                      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                      RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L]
                      Максим
                      22 ноября 2016, 16:34
                      +1
                      а так
                      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                      RewriteRule ^index\.php$ / [R=301,L]
                      Роман
                      22 ноября 2016, 16:37
                      0
                      Нет, к сожалению =(
                      Максим
                      22 ноября 2016, 16:41
                      +1
                      Кстати, браузеры вроде еще кешируют ссылки (перенаправления)… нужно очистить кеш перед тем как пробовать…
                      Роман
                      22 ноября 2016, 16:46
                      1
                      0
                      Это было сделано в первую очередь! MODx вообще хорошо все кеширует!

                      Кстати да, попробовал в другом браузере, заработало!

                      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
                      RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L]
                      Спасибо тебе!
                      Максим
                      22 ноября 2016, 16:51
                      +1
                      Ок, пожалуйста))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
17