Ошибка 404 при настройке подкаталога в nginx

Я добавляю подкаталог / блог на свой сервер, который является установкой wordpress.

Я установил следующую конфигурацию на nginx, но получаю ошибку 404 на / блог. Остальная часть сайта / конфигурации работает отлично.

Что мне не хватает?

domain.com

server {
    listen      80;
    listen   [::]:80;
    server_name domain.com;

    return 301 https://domain.com$request_uri;
 }

server {
    listen 443  ssl;
    server_name domain.com;

    ssl_certificate    /etc/ssl/domain_com-bundle.crt;
    ssl_certificate_key    /etc/ssl/domain_com.key;

    root /opt/domain.com/public/;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

      location /blog {
        root /var/www/html/siteWordpress/;
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
      }

      location / {
        try_files $uri @backend;
      }

       location @backend {
     proxy_pass http://127.0.0.1:3030;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection 'upgrade';
     proxy_set_header Host $host;
     proxy_cache_bypass $http_upgrade;
   }

}
0
задан 14 September 2016 в 13:45
1 ответ

WordPress использует PHP, и в настоящее время PHP настроен для корневого каталога документа /opt/domain.com/public/ , но не для корневого каталога документа / var / www / html / siteWordpress / .

Вам необходимо добавить блок вложенного местоположения:

location ^~ /blog {
    root /var/www/html/siteWordpress/;
    index index.php index.html index.htm;
    try_files $uri $uri/ /blog/index.php?q=$uri&$args;

    location ~ \.php$ { ... }
}

Модификатор ^ ~ необходим, чтобы префикс местоположения имел приоритет над другим регулярным выражением локации на одном уровне. См. этот документ для получения дополнительной информации.

URI по умолчанию в инструкции try_files должен иметь префикс / blog , в противном случае неправильный index.php будет выполнен.

Вышеупомянутое предполагает, что WordPress установлен в / var / www / html / siteWordpress / blog / , если это не так, ваша конфигурация стала намного сложнее .

WordPress должен знать, что он размещен в подкаталоге, например, путем добавления следующего в wp-config.php :

define('WP_HOME','http://example.com/blog');
define('WP_SITEURL','http://example.com/blog');
2
ответ дан 4 December 2019 в 13:38

Теги

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