Решил сделать такую вещь.
Есть каталог спортивных товаров. Категории разбиты по виду спорта.
линк примерно такой
site.com/catalog/basket/ - категория
site.com/catalog/basket/streetbool/ - подкатегоория с товарами
site.com/catalog/basket/item/30/ - продукт в подкатегории
Хочу разнести по поддоменам категории и чтобы на каждом поддомене была информация только о данной категории.
пример
basket.site.com - категория
basket.site.com/steetbool/ - подкатегория с товарами
basket.site.com/item/30/ - продукт в подкатегории
Подскажите как реализуется такое со стороны пхп и со стороны сервера (apache или nginx)?
Спустя 1 час, 52 минуты, 52 секунды (7.09.2012 - 21:02) killer8080 написал(а):
Для начала нужно добавить в DNS A-запись с маской субдомена
где 1.2.3.4 - ip адрес сервера, при этом все субдомены site.ru будут резолвится на этот адрес.
В апаче в настройках вирт хоста также прописать алиас
По настройкам нгинкса не в курсе, думаю там то же должны настраиваться псевдонимы.
На стороне php анализируй запрошенный домен в $_SERVER['HTTP_HOST'].
Как то так.
UPD с nginx-ом оказывается все еще проще, маска задается сразу в server_name
*.site.com. A 1.2.3.4
где 1.2.3.4 - ip адрес сервера, при этом все субдомены site.ru будут резолвится на этот адрес.
В апаче в настройках вирт хоста также прописать алиас
ServerAlias "*.site.com"
По настройкам нгинкса не в курсе, думаю там то же должны настраиваться псевдонимы.
На стороне php анализируй запрошенный домен в $_SERVER['HTTP_HOST'].
Как то так.
UPD с nginx-ом оказывается все еще проще, маска задается сразу в server_name
Спустя 4 часа, 35 минут, 25 секунд (8.09.2012 - 01:38) FatCat написал(а):
Делал виртуальные сабдомены.
httpd.conf
В директории subdomens файл index.php определяет запрошенный сабдомен:
В зависимости от запрошенного сабдомена из БД берется нужный профиль.
httpd.conf
<VirtualHost *>
ServerName *.site.ru
DocumentRoot /home/user/subdomens
</VirtualHost>
<VirtualHost *>
ServerName site.ru
DocumentRoot /home/user/site
</VirtualHost>
В директории subdomens файл index.php определяет запрошенный сабдомен:
$subdomen = substr($_SERVER['HTTP_HOST'],0,strpos($_SERVER['HTTP_HOST'],".site.ru"));
В зависимости от запрошенного сабдомена из БД берется нужный профиль.
Спустя 3 дня, 9 часов, 38 минут, 12 секунд (11.09.2012 - 11:16) REZzANATOR написал(а):
FatCat, killer8080 Спасибо большое. Лед тронулся)
Пробую на ubunte под nginx
делаю так
sub.test.loc
Тишина. Поддомен не отвечает и лог не пишется(
Пробую на денвере
Получается
Откликается только на имя папки, * не прокатывает.
К примеру в home/test.loc/ лежат www и subdomain откликается только на subdomain. А при запросе sub.test.loc тоже тишина.
Подскажите как подправить?
Пробую на ubunte под nginx
делаю так
server {
listen 80;
server_name test.loc;
root /home/sites/test.loc/www;
error_log /home/sites/test.loc/logs/error.log;
location / {
index index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
server {
listen 80;
server_name *.test.loc;
root /home/sites/test.loc/subdomain;
error_log /home/sites/test.loc/logs/error_subdomain.log;
location / {
index index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
sub.test.loc
Тишина. Поддомен не отвечает и лог не пишется(
Пробую на денвере
Получается
Откликается только на имя папки, * не прокатывает.
К примеру в home/test.loc/ лежат www и subdomain откликается только на subdomain. А при запросе sub.test.loc тоже тишина.
Подскажите как подправить?
Спустя 9 минут, 19 секунд (11.09.2012 - 11:25) killer8080 написал(а):
Цитата (REZzANATOR @ 11.09.2012 - 11:16) |
Пробую на денвере Получается Откликается только на имя папки, * не прокатывает. |
Потому что браузер не знает куда запрос слать, на денвере придется ручками под каждый субдомен добавлять запись в hosts.
Спустя 27 минут, 16 секунд (11.09.2012 - 11:53) REZzANATOR написал(а):
killer8080, угу понятно.
Как же быть с nginx
Как же быть с nginx
Спустя 38 минут, 44 секунды (11.09.2012 - 12:31) killer8080 написал(а):
Цитата (REZzANATOR @ 11.09.2012 - 11:53) |
Как же быть с nginx |
Настраивать нужно. Виртхост test.loc в апаче, должен слушать интерфейс 127.0.0.1 на 9000 порту, плюс нужно будет исправлять бок с REMOTE_ADDR на бекэнде, прикручивать к апачу mod_rpaf, на нгинксе настраивать передачу REMOTE_ADDR через заголовок X-Real-IP, или X-Forwarded_For. в общем гугли "настройка связки nginx apache"
Спустя 3 часа, 4 минуты, 57 секунд (11.09.2012 - 15:36) REZzANATOR написал(а):
Не, у меня пхп через cgi работает и вместо апача все отдает nginx
_____________