Перенос компонентов на поддомены!.. Есть у кого опыт реализации подобного?

#1 3 августа 2012 в 09:58
На 1 проекте необходимо перенести компоненты на поддомены. Кто-нибудь реализовывал подобное на инстанте?
#6 8 августа 2012 в 21:27

На 1 проекте необходимо перенести компоненты на поддомены. Кто-нибудь реализовывал подобное на инстанте?

FreeLancer
Было дело, грешен laughСмотря чего ты хочешь.
Как я реализовывал. Воспользовался вот этим методом и этим Установил несколько движков на под домены, база одна, но префиксы разные, потом единый дизайн и меню, если не смотреть на адресную строку так и не догадаешься что на разных под доменах ходишь. Естественно сильно плохо что приходится меню энное количество раз делать и проблема с аватарками, приходится если кто загрузил новую аву идти копировать с папки в папку на хостинге аватарку. А так ни чего, правда в некоторых компонентах нужно лезть в базу кое что изменять. Ну если самый обычный пользователь разобрался (в смысле я) так думаю что не трудно. Естественно все это нужно поддерживать. По сути получается мощь нескольких движков "под капотом", плюс раскидываешь нагрузку. Некоторые компоненты можно переименовать или задать иные функции, так например можно из второго вопрос-ответ изменением лишь в языковом файле сделать идеи или предложения какие, ну и так далее. В 7 месяце был год как начал сайт крутится, пока работает.
#7 9 августа 2012 в 07:33


На 1 проекте необходимо перенести компоненты на поддомены. Кто-нибудь реализовывал подобное на инстанте?

FreeLancer
Было дело, грешен laughСмотря чего ты хочешь.
Как я реализовывал. Воспользовался вот этим методом и этим Установил несколько движков на под домены, база одна, но префиксы разные, потом единый дизайн и меню, если не смотреть на адресную строку так и не догадаешься что на разных под доменах ходишь. Естественно сильно плохо что приходится меню энное количество раз делать и проблема с аватарками, приходится если кто загрузил новую аву идти копировать с папки в папку на хостинге аватарку. А так ни чего, правда в некоторых компонентах нужно лезть в базу кое что изменять. Ну если самый обычный пользователь разобрался (в смысле я) так думаю что не трудно. Естественно все это нужно поддерживать. По сути получается мощь нескольких движков "под капотом", плюс раскидываешь нагрузку. Некоторые компоненты можно переименовать или задать иные функции, так например можно из второго вопрос-ответ изменением лишь в языковом файле сделать идеи или предложения какие, ну и так далее. В 7 месяце был год как начал сайт крутится, пока работает.

Коля

да уж, ну это конечно извращение)
#8 2 июня 2013 в 14:04
ап тема… тоже интересно… задавал подобный вопрос но в упращённом варианте.
Нужна возможность создания поддомена для iMaps объекта…
#9 2 июня 2013 в 20:44
Переадресация поддоменов с помощью .htaccess
Однажды сталкиваешься с проблемой — необходимо иметь неограниченное количество поддоменов, а они как раз кончились. Приходится заниматься изучением mod_rewrite, с помощью которого возможно сделать почти все что угодно.
Потратив достаточно долгое время на поиски готового скрипта, пришлось констатировать тот факт, что либо все это работает не совсем правильно, либо вообще не работает.
Теперь я знаю как это сделать и сейчас покажу на примерах. Для начала сделаем поддомены на свежем сайте, т.е. готовой структуры пока нет и можно делать все что угодно.
Создайте файл .htaccess в корне сайта и впишите в него следующий код:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.(com|ru)$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.domain\.(com|ru)$
RewriteCond %{REQUEST_URI} !sub/
RewriteRule ^(.*)$ sub/%2/$1
Теперь подробно остановимся на каждом пункте.
Для запуска mod_rewrite используется команда RewriteEngine on, если ее закомментировать, то весь код перестанет работать, часто это бывает очень полезно.
RewriteBase указывает на использование текущей папки.
RewriteCond устанавливает правила, в зависимости от которых будет или не будет произведена замена адреса. В первом случае проверяется является ли поддомен с названием www, естественно его перенаправлять не нужно, поэтому перед строкой стоит восклицательный знак, обозначая отрицание. В скобках указано com|ru, используется только если вы имеете два одинаковых домена в разных зонах и они являются псевдонимами (алиасам) другу друга. Если вы используете один сайт, то запись будет такой:
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
Во втором RewriteCond проверяется наличие в имени адреса поддомена, причем работать будет одинаково с www и без него, т.е. сайты www.forum.domain.com и forum.domain.com будут обрабатываться одинаково.
Третье условие используется для проверки уже исправленного адреса, т.к. mod_rewrite выполняется пока условия перестанут подходить. Итак мы проверяем в строке запроса (URI, то что идет после имени домена, например /info.html) наличие папки куда мы перенаправили запрос, в данном случае это sub, перед ним стоит восклицательный знак, который сообщает, что условие не должно выполняться при наличии такой подстроки.
И наконец само правило преобразования адреса RewriteRule. В нем мы заменяем строку запроса на новый адрес:
sub + второй найденный элемент (условие RewriteCond %{HTTP_HOST} (www\.)?(.*)\.domain\.(com|ru)$, то что находится во вторых скобках) + адрес, который был изначально ( описанный в том же RewriteRule: ^(.*)$)
Перед запуском этого скрипта вам необходимо создать в папке sub необходимые вам папки поддоменов.
Лучше воздержаться от использования в качестве метки и основной папки простое слово типа sub, т.к. оно может оказаться в адресе страницы, лучше использовать произвольный набор символов.
Бывают ситуации, когда необходимо использовать два разных адреса для одной и той же папки, например:
domain.com/forum/
и
forum.domain.com
В данном случае у нас на сервере уже есть папка forum, и полностью копировать ее еще и в папку sub не очень удобно и не совсем правильно. Найденный вариант использования mod_rewrite не совсем универсальный, но все позволяет обслужить конечное число поддоменов:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^forum\.domain\.(com|ru)$
RewriteCond %{REQUEST_URI} !/forum/
RewriteRule ^(.*)$ /forum/$1 [L]
Сначала проверяем нужный нам поддомен forum.domain.com (или forum.domain.ru). Потом ищем строку /forum/ в самом запросе, проверяя не изменили ли мы уже этот адрес. И наконец делаем преобразование. Знак [L] обозначает окончание преобразования, если это правило выполнилось, то дальнейшая обработка прекращается.
Таких правил может быть сколько угодно, главное не забывайте о наличии нужных папок на сервере.
В некоторых случаях в панели хостинга нужно прописать алиас для вашего домена. Обычно там описаны два варианта:
domain.com
и
www.domain.com
Вам нужно добавить строку:
*.domain.com
Теперь, когда все настроено и работает, возникает проблема со ссылками Sape. Они не будут нормально отображаться, потому что фактически адрес ссылки изменился, был forum.domain.com, а стал, например, domain.com/sub/forum/, поэтому в коде Sape нужно прописать новый хост и путь к папке с базой. Выглядит это примерно так:
if (!defined('_SAPE_USER'))define('_SAPE_USER', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx');
require_once($_SERVER['DOCUMENT_ROOT'].'/sub/forum/'._SAPE_USER.'/sape.php');
$o['host']='forum.domain.com';
$sape = new SAPE_client($o);
echo $sape->return_links();
Обратите внимание на путь к файлу sape.php в require_once и новое имя домена в $o['host'] joke
Источник:
htmlweb.ru/php/htaccess_subdomain.php
#10 2 июня 2013 в 20:55
Nikoloz, два раза прочел но не понял, что решает манипулирование .htaccess ?
Возможно ли сделать поддомен и правилами .htaccess перенаправлять работу компонента на поддомен, но не копируя в папку поддомена файлы компонента из папки основного домена?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.