Уверен, основываясь на различных примерах (например, здесь ), я настроил все правильно:
1) Я создал файл notfound.html в корневом каталоге моегоsite
2) Я использую xampp, т.е.Веб-сервер Apache, поэтому, основываясь на материалах, которые я прочитал, Apache ищет notfound.html в корневом каталоге сайта, когда в браузере набирается несуществующая страница, например, www.mysite.com/NotAValidPage.html и использует этот notfound.html для сообщения об ошибке 404
Вот что я пробовал и результат каждой попытки:
1test) Я поставил свой собственный notfound.html в корневой каталог моего сайта и введите несуществующую страницу
1result) my notfound.html не используется, но вместо этого ошибка 404 по умолчанию с (я полагаю) моего веб-сервера, появляется и говорит:
Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try
again.
If you think this is a server error, please contact the webmaster.
Error 404
localhost
2/14/2012 9:11:29 AM
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
2test) Затем я добавил файл .htaccess в корневую папку моего сайта и добавил следующую строку в этот файл .htaccess:
ErrorDocument 404 /notfound.html
затем я набрал несуществующую страницу в своем браузере.
2result) Я все еще вижу страницу ошибки 404 по умолчанию, а не мой notfound.html, только на этот разна странице ошибки по умолчанию написано:
Not Found
The requested URL /mysite.com/indsadfaex.php was not found on this server.
Additionally, a 404 Not Found error was encountered while trying
to use an ErrorDocument to handle the request.
3test) Затем я изменил свой .htполучить доступ к файлу, удалив символ '/' перед именем файла пользовательской страницы ошибки 404 следующим образом: ErrorDocument 404 notfound.html
3result) Теперь, когда я печатаюимя моего сайта, за которым следует несуществующая страница, я больше не вижу по умолчанию страницы ошибки 404 - окно браузера полностью пустое, за исключением следующего в верхнем левом углу:
notfound.html
Не уверен, чтоделать здесь, кажется, что мне не хватает какой-то тонкости - любые идеи действительно ценятся.
РЕДАКТИРОВАТЬ: Я сомневаюсь, что это важно, но в моем файле .htaccess есть 2 других заявления для перенаправленияситуации:
RewriteEngine on
RewriteRule ^([^/\.]+)$ theHandlerPage.php?theArgumentPassedIn=$1 [L]
Регулярное выражение здесь просто говорит: «перейти к самому концу набранного URL и сопоставить непрерывную строку символов, если нет« / »или«. »находится в этом непрерывном потоке символов, затем передайте их с помощью $ _GET [theArgumentPassedIn '] в файл theHandlerPage.php.
Я не думаю, что это правило перезаписи вступает в действие здесь, потому что оно будетне совпадает с неверным именем страницы, таким как mysite / badpage.html, из-за '.'в badpage.html.
Хорошо. Я обнаружил небольшую неожиданность.
1) Я переместил свой файл ошибок notfound.html в родительский каталогмоего сайта - тогда как раньше файл находился в c:/xampp/htdocs/mysite/notfound.html
, я теперь переместил этот файл в c:/xampp/htdocs/notfound.html
.
2), затем я использую ErrorDocument 404 /notfound.htmlвнутри моего .htaccess
файла, который находится по адресу c:/xampp/htdocs/mysite/.htaccess
И теперь, когда я печатаю в панели браузера mysite/aBadfilename.html
, мой 404 notfound.html показывает нормально.
НО ЭТО НЕПРАВИЛЬНО.Я не могу разместить мой notfound.html
в родительском каталоге моего сайта, потому что мне нужен отдельный notfound.html для каждого разрабатываемого мной сайта.Я должен быть в состоянии поместить notfound.html моего сайта в его папку, т.е.внутри c:/xampp/htdocs/mysite.
Поскольку c:/xampp/htdocs
является корневой папкой всех веб-сайтов на сервере.
Почему мой веб-сервер ищет notfound.html
моего сайта в c:/xampp/htdocs
корневой каталог вместо c:/xampp/htdocs/mysite
?В конце концов, я набираю mysite / badfile.html, поэтому веб-сервер (на мой взгляд) должен понимать, что notfound.html находится в папке c:/xampp/htdocs/mysite
.