У меня есть сайт WordPress, работающий на Nginx. В моей конфигурации у меня есть блок местоположения, как это:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Я хочу иметь специальный каталог, полный статического контента. Если URL соответствует файлу в статическом каталоге, я хочу, чтобы он обслуживался вместо содержимого Wordpress.

Я не буду знать имена файлов раньше времени.

Я пытался изменить свой блок местоположения на

location / {
    try_files /static/$uri /static/$uri/ $uri $uri/ /index.php?$args;
}

Это в основном делает то, что я хочу (до тех пор, пока static является каталогом в $document_root), но переписывает URL, который видит посетитель. Я хотел бы избежать этого, если это возможно. Например, во избежание https://example.com/catalog.php перенаправлении https://example.com/static/catalog.php Я просто хочу, чтобы Nginx обслуживал контент из статики, не зная посетителя.


Возможно, я не был особенно ясен.

Мой контент WordPress находится в /srv/www/mysite/html и моя конфигурация Nginx примерно такая:

server {
    root /srv/www/mysite/html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

У меня есть другая папка, /home/dave/static , с произвольным содержимым. Скажем, у него есть файл с именем catalog.html . Если посетитель заходит на https://example.com/catalog.html , я хочу, чтобы контент из /home/dave/static/catalog.html обслуживался. Если нет подходящего статического файла, я хочу вернуться к содержимому WordPress.

Вот еще кое-что, что я попробовал за это время:

server {
    root /srv/www/mysite/html;

    location / {
        root /home/dave/static;
        try_files $uri $uri/ @fallback;
    }
    location @fallback {
        try_files $uri $uri/ /index.php?$args;
    }
}

Этот конфиг не работает. Кажется, он не распознает статический контент, а обслуживает только контент WordPress.

0