Назад | Перейти на главную страницу

Использовать общую страницу 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 /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 виртуального хоста, к которому я пытаюсь получить доступ.

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

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

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