Используйте общую страницу 404 для виртуальных хостов в Nginx

Я хотел бы иметь общую страницу 404 для использования на моих виртуальных хостах. Ниже приведены мои настройки.

Два сайта, каждый со своим собственным файлом конфигурации в /sites-available/ и / sites-enabled /

  1. www.foo.com
  2. bar.foo.com

Каталог www настроен как:

www/
foo.com/
foo.com/index.html
bar.foo.com/
bar.foo.com/index.html
shared/
shared/404.html

Оба конфигурационных файла в / sites-available одинаковы, за исключением имени root и сервера:

root /var/www/bar.foo.com;
index index.html index.htm index.php;

server_name bar.foo.com;

location / {
    try_files $uri $uri/ /index.php;
}
error_page 404 /404.html;
location = /404.html {
    root /var/www/shared;
}

Я попробовал приведенный выше код, а также попытался установить error_page 404 /var/www/shared/404.html (без следующего блока местоположения).

Я также дважды проверил, чтобы убедиться, что мои разрешения установлены на 775 для всех папок и файлов в www.

Когда я пытаюсь получить доступ к несуществующей странице, Nginx обслуживает соответствующий index.php виртуального хоста, к которому я пытаюсь получить доступ.

Кто-нибудь может указать, что я делаю не так? Спасибо!

1 ответ

Решение

Как насчет этого?

location / {
    try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
    root /var/www/shared;
}
Другие вопросы по тегам