DeRomanok
@DeRomanok

Мультидоменность и .htaccess?

Приветствую. Есть сайт написанный на PHP, сайт работает с несколькими доменами, в зависимости от домена выводит нужное содержание. В .htaccess нужно подключать набор правил используемых только для какого-то определенного домена. Возможно ли подключать в .htaccess правила из других файлов, что-то типа:

Include %{HTTP_HOST}.conf?

Может есть какие-то другие способы?

У самого в мыслях писать для каждого домена RewriteCond, но тогда .htaccess уж больно объемный будет.
  • Вопрос задан
  • 3966 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Только через RewriteCond увы. Покрайнемере проблем с ним меньше. А у вас VPS/Dedicated или шаред хостинг?
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
anycolor
@anycolor
Домены разные или поддомены одного домена?
Ответ написан
У меня на сайтах это решается на этапе инициализации движка, но движок самописный с поддержкой мультидоменной архитектуры. Мне кажется это более удобное решение, нежели решать это при помощи mod_rewrite
Ответ написан
Комментировать
@sinos
если свой VPS и там nginx, то
Ответ написан
Комментировать
@sinos
если свой VPS и там nginx, то
Ответ написан
Комментировать
@sinos
server {
listen 80;
server_name domain1.com domain2.com domain3.com;
charset utf-8;

location / {
root /home/www/domains;
index index.php index.html index.htm;

if (-f $request_filename) {
expires 30d;
break;
}

if (!-e $request_filename) {
rewrite ^/photos/(.*)/(.*)$ /photos/domain1/$1/$2 break;
rewrite ^/photos/(.*)/(.*)$ /photos/domain1/$1/$2 break;
rewrite ^/photos/(.*)/(.*)$ /photos/domain3/$1/$2 break;
rewrite ^/([^/]*)/([^/]*)/$ /index.php?do=$1&type=$2 last;
rewrite ^/([^/]*).html/([^/]*)/$ /index.php?do=$1&page=$2 last;
rewrite ^/([^/]*)/([^/]*).html$ /index.php?do=$1&point=$2 last;
rewrite ^/([^/]*).html$ /index.php?do=$1 last;
rewrite ^/([^/]*)/$ /index.php?do=$1 last;
rewrite ^/sitemap.xml /sitemap.php last;
}
}

location ~ \.php$ {
root /home/www/domains;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/domains$fastcgi_script_name;
include fastcgi_params;
}

}
Ответ написан
Комментировать
@sinos
а в index.php

$host = $_SERVER['HTTP_HOST'];
$directory = realpath(dirname(__FILE__)).'/config/';
$dir = opendir($directory);
while(($file = readdir($dir))){
if (is_file($directory.$file) && preg_match('/'.$host.'/i', $file)){
include($directory.$host.".php");
}
}
closedir ($dir);

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

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

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