Настройка Drupal Multi-Site с подкаталогом в NIGNX - PullRequest
0 голосов
/ 14 декабря 2018

Я использую Drupal 8 с настройкой нескольких сайтов, расположенной в каталоге "/ var / www / html / drupal", и я использую NGINX в качестве веб-сервера.

У меня есть следующиедоменные имена:

  1. qa.example.com
  2. qa.example.com / v1
  3. qa.example.com / v2

Где "qa.example.com" - основной домен, обслуживающий статический файл (index.html с некоторой информацией в нем).А v1 и v2 являются динамическими сайтами, созданными с использованием Drupal 8. Multi-site.

Поскольку на qa.example.com есть только 1 статический файл, я поместил его в каталог ядра Drupal и указал виртуальный хост на "/ var/ www / html / drupal "каталог.В соответствии с документацией, приведенной в examples.sites.php, я добавил запись сайтов в sites.php, как показано ниже:

<?php
  $sites['qa.example.com.v1'] = 'v1.example.com';
  $sites['qa.example.com.v2'] = 'v2.example.com';

При доступе к «qa.example.com» он работает нормально, так как у него только одинФайл index.html, но при доступе к «qa.example.com/v1» меня перенаправляют на «qa.example.com/core/install.php» или получают страницу «404 Not Found» nginx.Я не понимаю, чего мне не хватает.

Ниже приводится конфигурация NGINX, которую я использую:

server {
  server_name qa.example.com;
  listen 80;
  listen [::]:80;
  index index.php index.html;

  location / {
    root /var/www/html/drupal;
    try_files $uri /index.php?$query_string;
  }

  location /v1 {
    root /var/www/html/drupal;
    # try_files $uri $uri/ /var/www/html/drupal/index.php?$query_string;
  }

  location = /favicon.ico {
    log_not_found off;
    access_log off;
  }
  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }
  location ~ \..*/.*\.php$ {
    return 403;
  }
  location ~ ^/sites/.*/private/ {
    return 403;
  }
  location ~ (^|/)\. {
    return 403;
  }
  location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1;
  }
  location ~ '\.php$|^/update.php' {
    fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
  }
  location ~ ^/sites/.*/files/styles/ {
    try_files $uri @rewrite;
  }
  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
    log_not_found off;
  }
}

Ниже приведена структура каталогов, которую я имею:

// main directory
/var/www/html/drupal

// my static file for landing domain name
/var/www/html/drupal/index.html

// drupal core files
/var/www/html/drupal/core
// drupal's index.php file
/var/www/html/drupal/index.php
// contrib and custom modules
/var/www/html/drupal/modules

// Site v1 directory as per Drupal's multi-site directory structure.
/var/www/html/drupal/sites/v1
// Site v2 directory as per Drupal's multi-site directory structure.
/var/www/html/drupal/sites/v2

Я просмотрел много ссылок в Интернете, но ничего не работает.

ПРИМЕЧАНИЕ: v1 и v2 не являются действительными каталогами "/ var / www /html / drupal ".

Ниже приведены ссылки, на которые я ссылался:

  1. nginx проектов в подпапках
  2. расположение Nginxконфигурация (подпапки)
  3. Мультисайт с двумя сайтами, использующими один и тот же домен?
  4. Приложения PHP в подкаталоге в Nginx

1 Ответ

0 голосов
/ 16 декабря 2018

Поскольку вы работаете над настройкой мультисайта, я предлагаю вам создать каталог с именем домена в каталоге сайтов и сделать запись в sites.php, как показано ниже.

$sites[directoy name] = 'domain name';

Для каждого сайта вам нужно сделатьзапись в sites.php.Каждый домен должен иметь settings.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...