мультисайтовая среда в drupal с использованием подкаталогов на nginx - PullRequest
1 голос
/ 27 октября 2011

Я пытаюсь настроить многосайтовую среду в drupal, используя подкаталоги.Здесь очень хороший набор инструкций: http://www.drupalcoder.com/blog/drupal-multisite-in-subfolders,, но он специфичен для apache, и я работаю с Nginx.

как мне сделать эти 2 вещи в Nginx:

цитирование по ссылке выше:

Добавить псевдоним ваш файл конфигурации Apache

Мы хотим, чтобы запросы на 3 подкаталога направлялись в один и тот же экземпляр Drupal.Мы можем сделать это, используя функциональные возможности Apache для псевдонимов.

Alias /subdir1 /var/www
Alias /subdir2 /var/www
Alias /subdir3 /var/www

Полагаю, здесь кодовая база Drupal размещена в / var / www на вашей машине..php

Теперь, когда мы обслуживаем все запросы из одной кодовой базы, мы должны перенаправить все запросы в index.php.Это необходимо сделать, поскольку все запросы Drupal обслуживаются из одной конечной точки, которая называется index.php.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/subdir1/(.*)$
RewriteRule ^(.*)$ /subdir1/index.php?q=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/subdir2/(.*)$
RewriteRule ^(.*)$ /subdir2/index.php?q=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/subdir3/(.*)$
RewriteRule ^(.*)$ /subdir3/index.php?q=$1 [L,QSA]

Ответы [ 2 ]

0 голосов
/ 31 декабря 2015

Я бы использовал карту для захвата всего после / subdir в качестве переменной на уровне http. Тогда вы можете избежать местоположений регулярных выражений, которые вводят зависимости позиции.

map $uri $params {
    ~^/[^/]+/(?<subpath>.*) $subpath;
}

server {
    root /var/www;

    location /subdir1/ {
        try_files $uri $uri/ /subdir1/index.php?q=$params
    }

    location /subdir2/ {
        try_files $uri $uri/ /subdir2/index.php?q=$params
    }

    location /subdir3/ {
        try_files $uri $uri/ /subdir3/index.php?q=$params
    }
}
0 голосов
/ 27 октября 2011

Это должно работать (не проверять) для псевдонима:

location ~ ^/subdir\d+/(.*)$ {
    alias /var/www;
}

и что-то подобное для переписываний и fastcgi-php:

location / {
    root   /var/www;
    index  index.php index.html;

    if (!-f $request_filename) {
        rewrite  ^(.*)$  /index.php?q=$1  last;
        break;
    }

    if (!-d $request_filename) {
        rewrite  ^(.*)$  /index.php?q=$1  last;
        break;
    }
}

location ~ .php$ {
    fastcgi_pass   127.0.0.1:9000;  
    fastcgi_index  index.php;

    fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
    fastcgi_param  QUERY_STRING     $query_string;
    fastcgi_param  REQUEST_METHOD   $request_method;
    fastcgi_param  CONTENT_TYPE     $content_type;
    fastcgi_param  CONTENT_LENGTH   $content_length;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...