Локальный URL для директивы apache ErrorDocument, не работающей в файле.htaccess
Я хочу использовать локальный URL-адрес (относительный путь), чтобы показать свое пользовательское сообщение об ошибке 404, и оно не работает должным образом. Как указано в документации Apache:
Синтаксис директивы ErrorDocument:
ErrorDocument <3-digit-code> <action>
где действие будет рассматриваться как:
Локальный URL для перенаправления (если действие начинается с "/").
Внешний URL-адрес для перенаправления (если действие является допустимым URL-адресом).
Текст для отображения (если ничего из вышеперечисленного). Текст должен быть заключен в кавычки ("), если он состоит из более чем одного слова.
Методы 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 ошибки должны быть обработаны правильно.