Не удается заставить nginx работать с wordpress в другом месте

У меня есть следующая конфигурация nginx, которая отлично работает:

    #wordpress
    location /wordpress/ {
        index index.php;
        alias /usr/share/webapps/wordpress/;
        try_files $uri $uri/ wordpress/index.php?$args;
    }

    location ~ \.php$ {
        alias /usr/share/webapps/;
        include fastcgi.conf;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location "^/wordpress/.*\.(js|css|png|jpg|jpeg|gif|ico)$" {
        expires max;
    }

И я пытаюсь изменить расположение URL-адреса на "hidden_wordpress", поэтому я попробовал это:

    #wordpress
    location /hidden_wordpress/ {
        index index.php;
        alias /usr/share/webapps/wordpress/;
        try_files $uri $uri/ wordpress/index.php?$args;
    }

    location ~ \.php$ {
        alias /usr/share/webapps/;
        include fastcgi.conf;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location "^/hidden_wordpress/.*\.(js|css|png|jpg|jpeg|gif|ico)$" {
        expires max;
    }

Но с этой конфигурацией я продолжаю получать журналы ошибок:

==> nginx_error.log <==
2018/12/18 20:35:38 [error] 30923#30923: *1 FastCGI sent in stderr: "Unable to open primary script: /usr/share/webapps//hidden_wordpress/index.php (No such file or directory)" while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /hidden_wordpress/ HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: ""

Я не перемещал содержимое wordpress в папку «hidden_wordpress», так как не хочу это менять.

Кажется, что URL-адрес неправильно переписан для части php. Есть идеи, как этого добиться?

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
2
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш блок location ~ \.php$ не может правильно разрешить URI, начинающиеся с /hidden_wordpress.

Используйте вложенные блоки местоположения, чтобы можно было унаследовать эффект от директивы alias.

Например:

location ^~ /hidden_wordpress {
    index index.php;
    alias /usr/share/webapps/wordpress;

    if (!-e $request_filename) { rewrite ^ /hidden_wordpress/index.php last; }

    location ~ \.php$ {
        if (!-f $request_filename) { return 404; }
        ...
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass php;
    }

    location ~ \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
    }
}

Используйте $request_filename, чтобы получить правильный путь к файлу с псевдонимом. Избегайте try_files с alias из-за Эта проблема. См. это предупреждение об использовании if.

Большое спасибо за очень подробный ответ, я просто добавил ~ к последней записи местоположения, чтобы он работал

aze 26.02.2019 17:42

Другие вопросы по теме