Announcement

Collapse
No announcement yet.

Кто силен в mod_rewrite?

Collapse

Forum Topic List

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Кто силен в mod_rewrite?

    Понимаю, что не совсем в тему. Но, думаю, в остальных разделах получить подсказку будет сложнее.



    Вопрос такой.

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

    Хочется весь http трафик со второго домена переправить на первый.

    Т.е. чтобы пользователь заходил на 2-й домен типа:

    [url="http://domen2//bla-bla-bla"]http://domen2//bla-bla-bla

    а сервер загружал ему

    [url="http://domen1//bla-bla-bla"]http://domen1//bla-bla-bla

    Но чтобы в адресной строке при этом ничего не менялось.

    Т.е. чтобы результат был аналогичен использованию ServerAlias в httpd.conf

    Пробовал прописывать в .htaccess что-нть вроде

    RewriteRule ^(.*)/ [url="http://domen1/$1"]http://domen1/$1 [L]

    Но происходит обычный редирект, т.е. в адресной строке все меняется, чего мне не надо.



    Пояснение: все находится у хостера, т.е. влиять на Apache я не могу. Только .htaccess. mod_rewrite типа поддерживается.

  • #2
    Re: Кто силен в mod_rewrite?

    насколько я себе представляю данную задачу, то при помощи mod_rewrite ее вообще не решить, по крайней мене не через .htaccess



    Если оба домена расположены на одном ip и физически на одной машине, то можно просто сделать symlink из одной директории в другую.



    К примеру, в домене ulitka.com существует директория и файл /veey/index.html



    делаем символьную ссылку всей директории в DocumentRoot другого домена.



    В результате имеем, что при обращении как по адресу

    http://visaforyou.org/veey/ так и по адресу http://ulitka.com/veey/ мы в браузере видим один и тот же файл, физически расположенный в DocumentRoot домена ulitka.com.



    Любые модификации и изменения в исходной директории немедленно отражаются и в директории за вторым доменом.



    К примеру, так реализовано на улитке хранение аудиокниг: исходная директория расположена на одном жестком диске, а в браузере открывается лишь символьная ссылка на этот диск. И эту директорию можно показывать под любым доменом, который направлен на ip адрес(а) этого webserver. Символьный линк хранится внутри DocumentRoot и при этом легко делать бэкап самого сервера, не прибегая к перемещению многих десятков гигабайт аудиофайлов.



    еще один способ я вижу такой:

    на одном сервере создаем файл http://ulitka.com/veey/index.p hp

    и при помощи директивы @readfile "включаем" какую-нибудь страницу с другого сервера. В этом случае второй сервер может быть вообще хоть cnn.com, льшь бы его вебмастер не поставил на сей счет защиты. К примеру, сейчас по адресу http://ulitka.com/veey/index.p hp можно увидеть нашу фотогалерею, которая физически расположена на другом сервере, в другом конце страны. Делается это при помощи следующего кода:

    HTML Code:
    <?php @readfile('http://photos.ulitka.com/index.php'); ?>


    Во втором случае при нажатии на любой линк внутри "вложенного" документа адрес в браузере тоже изменится. Чтобы и адрес в браузере не изменялся, можно использовать frame нулевой высоты или скрипт, который на стороне сервера выполняет все преобразования.



    p.s. для постоянных авторов Улитки могу бесплатно выделить часть ресурсов на одном из серверов, вы сможете использовать cpanel в качестве контрольной панели, у вас будет доступ к большому количеству скриптов (чаты, фотогалереи, контент менеджеры, форумы и пр.) mysql, php, cgi, ms front page extensions, почта, ftp, листы рассылки и многое другое. Этот сервер расположен на площадке ev1servers, одного из лучших хостеров современности. Стабильность, доказанная уже более чем трехлетним существованием Улитки, тоже вещь немаловажная в таком деле.

    Comment


    • #3
      Re: Кто силен в mod_rewrite?

      symlink помог бы, правда все равно пришлось бы немного через mod_rewrite доделать. Проблема в том, что у меня нет доступа к шеллу.

      Расскажу подробнее. Есть два разных аккаунта на одном IP. Т.е. у каждого свой httpdocs и все остальное. Структура директорий одинаковая. Я хочу на одном аккаунте поставить портальный движок. Движок сам может обрабатывать URL, т.е. то, что написано в строке браузера, и для каждого доменного имени будет подставлять свой контент. Но для этого нужно, чтобы все домены указывали в один каталог. Это можно сделать через symlink, если есть шелл, или просто поставить ServerAlias в конфиге Аппача. У меня ни того ни другого нет.

      Второй вариант, думаю, не подходит.

      Через mod_rewrite, мне все-таки кажется, можно сделать.

      Comment


      • #4
        Re: Кто силен в mod_rewrite?

        veey писал(а) Thu, 27 July 2006 08:42
        symlink помог бы, правда все равно пришлось бы немного через mod_rewrite доделать. Проблема в том, что у меня нет доступа к шеллу.

        Расскажу подробнее. Есть два разных аккаунта на одном IP. Т.е. у каждого свой httpdocs и все остальное. Структура директорий одинаковая. Я хочу на одном аккаунте поставить портальный движок. Движок сам может обрабатывать URL, т.е. то, что написано в строке браузера, и для каждого доменного имени будет подставлять свой контент. Но для этого нужно, чтобы все домены указывали в один каталог. Это можно сделать через symlink, если есть шелл, или просто поставить ServerAlias в конфиге Аппача. У меня ни того ни другого нет.

        Второй вариант, думаю, не подходит.

        Через mod_rewrite, мне все-таки кажется, можно сделать.
        Kaк насчёт того чтоб написать администрации хостинга с предоставлением всех необходимых поправок?

        Comment


        • #5
          Re: Кто силен в mod_rewrite?

          Да я их сразу спросил, как мне 2 домена в одну директорию направить. Сказали, что у каждого домена свой независимый набор, и, типа, никак .

          Если через mod_rewrite не придумаю, то буду просить их создать симлинк. Насколько я понимаю, мне потом надо будет в .htaccess такое правило написать:

          RewriteRule ^/(.*) /link_to_domain2$1 [L]

          Правильно?

          Но это сработает только если у них в конфиге стоит Options FollowSymLinks

          Comment


          • #6
            Re: Кто силен в mod_rewrite?

            > Но это сработает только если у них в конфиге стоит Options FollowSymLinks



            точно так. и никаких дополнителных директив более не нужно.

            p.s. а про хостинг на улитке я вполне серьезно, тот сержер что в rackshack, eще человек 20 без проблем вместит.

            Comment


            • #7
              Re: Кто силен в mod_rewrite?

              Ulitka писал(а) Thu, 27 July 2006 09:41
              > Но это сработает только если у них в конфиге стоит Options FollowSymLinks

              точно так. и никаких дополнителных директив более не нужно.

              Но ведь rewriterule все равно нужен будет? Или я чего-то не понимаю?

              У меня ведь в httpdocs домена1 будет, как бы, директория (например, link_d2), которая на самом деле будет симлинком на httpdocs домена2. И нужно, чтобы запросы http://domen1/ транслировались как http://domen1/link_d2/

              Тогда и получится желаемое: пишем http://domen1/, сервер подставляет http://domen1/link_d2/, что на самом деле является http://domen2/

              Я прав?

              Цитата:


              p.s. а про хостинг на улитке я вполне серьезно, тот сержер что в rackshack, eще человек 20 без проблем вместит.
              Тут просто после ребейта почти бесплатно получается, что не может не радовать.

              Comment


              • #8
                Re: Кто силен в mod_rewrite?

                забыл сказать - на улитке тоже бесплатно, без rebates



                а про задачу вашу нужно еще подумать, видно я ее не совсем сразу понял...

                Comment


                • #9
                  Re: Кто силен в mod_rewrite?

                  HTML Code:
                  RewriteEngine On
                  RewriteCond %{REQUEST_FILENAME} !-f
                  RewriteCond %{REQUEST_FILENAME} !-d
                  RewriteRule ^forum/(.*) index.php/$1 [L]


                  etot redirect ispolzuetsa na forume:

                  vse zaprosy kotorye prihodyat na adress /forum/something prozrachno redirektyatsa na script index.php/$1 gde $1 = something



                  mozhet byt eto reshenie pohozhe na to chto vam nuzhno...

                  Comment


                  • #10
                    Re: Кто силен в mod_rewrite?

                    С symlink получился облом. У них в конфиге "Options SymLinksIfOwnerMatch". Поэтому оно не работает. Попросил дабывать Alias в мою секцию VirtualHost, но они не хотят менять конфиг Апача. Если ничего больше не придумаю, то остается только чистый mod_rewrite.

                    Comment

                    Working...
                    X