Локальный URL для директивы apache ErrorDocument, не работающей в файле.htaccess

Я хочу использовать локальный URL-адрес (относительный путь), чтобы показать свое пользовательское сообщение об ошибке 404, и оно не работает должным образом. Как указано в документации Apache:

Синтаксис директивы ErrorDocument:

ErrorDocument <3-digit-code> <action>

где действие будет рассматриваться как:

  1. Локальный URL для перенаправления (если действие начинается с "/").

  2. Внешний URL-адрес для перенаправления (если действие является допустимым URL-адресом).

  3. Текст для отображения (если ничего из вышеперечисленного). Текст должен быть заключен в кавычки ("), если он состоит из более чем одного слова.

Методы 2 и 3 работают правильно. Для тестирования представьте папку с именем test с 3 файлами.

index.php: Главная страница

404.php: пользовательская страница 404

.htaccess:

RewriteEngine On 

ErrorDocument 404 /404.php

Теперь доступ к этому URL http://localhost/test/blah-blah не показывает мой 404.php страница вместо этого отображается страница по умолчанию Not Found с этим сообщением:

The requested URL /tests/test-htaccess/asdasd was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an 
ErrorDocument to handle the request.

Есть идеи, как это исправить?

1 ответ

Решение

Вы, вероятно, нашли решение своей проблемы с того момента, как спросили, но для тех, кто сталкивался с такой же проблемой, я бы сказал, что проблема в том, что вы запускаете свой сайт с помощью localhost.

В сообщении говорится, что Apache обнаружил ошибку 404 при попытке получить файл, указанный для Errordocument 404, поэтому он не видит

/404.php

Я предлагаю вам создать поддельный домен в вашем файле hosts и настроить с ним vhost.

Хосты на OSX:

sudo nano /etc/hosts

Хосты в Windows. Щелкните правой кнопкой мыши этот файл для редактирования в режиме администратора:

 C:\WINDOWS\System32\Drivers\Etc\Hosts

и введите что-то вроде этого:

127.0.0.1 myfakedomain.com

Чтобы настроить виртуальные хосты, вы должны раскомментировать вызов httpd-vhosts.conf в httpd.conf (ближе к концу, используя MAMP в этом случае)

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

но расположение этого файла зависит от используемого вами стека (Wamp, Mamp, Xampp и т. д.), поэтому выполните поиск по ключевому слову "Виртуальный хост" в его документации.

Тогда вы сможете запустить свой сайт, используя

myfakedomain.com/ 

в вашем браузере и 404 ошибки должны быть обработаны правильно.

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