У меня есть сайт 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.