Меню

Errordocument 404 htaccess не работает

ErrorDocument 404 /404.php is not working in .htaccess file in PHP

I have a .htaccess file in the root directory and also 404.php file there. Content of my .htaccess file is:

But when I am mis-spelling my url, 404.php is not opening. Instead I am getting following message:

The requested URL /mywebsite/ites.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.

But when I tried ErrorDocument 404 google.com , it worked.

3 Answers 3

I’ll consolidate my comments to this answer:

the /404.php path may not be the absolute path to your htdocs folder root but instead the root of your filesystem. This may be, based on your configuration, e.g. /home/htdocs/ or

So what one need to do is find out the absolute path and set it accordingly.

Where is your 404.php actually located in relation to your .htaccess file? Can you simply run it as a direct URL? Is the file readable by the server? Or is it in a nested subdirectory? You can also try the full URL as well:

  1. If the action begins with a «/»: A local path to redirect to.
  2. If the action is a valid URL: An external URL to redirect to.
  3. If neither of the above: Text to be displayed. (The text must be wrapped in quotes (» «) if it consists of more than one word.)

Local path: ErrorDocument 404 /local/path/to/404.php

External URL: ErrorDocument 404 http://external_url.example.com/server_error.html

Custom text: ErrorDocument 404 «Oops! We can’t find that pesky file. Sorry.»

You’ve chosen a local path, but are probably not pointing correctly to the file from the server’s perspective. Note that local server paths are not what you see in your URL, and often include things like

The problem is most likely that your path to 404.php is wrong, and cannot be found by your server.

Источник

Создание собственных страниц ошибок с помощью . htaccess (ошибка 404, 403, 401, 500)

Полная поддержка директив .htaccess прилагается.

Одни из самых дешевых услуг регистрации и главное пролонгации доменов.

Генерация — создание собственных кодов ответов Apache

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

Размещать данные директивы нужно в файле .htaccess расположенным в корне вашего сайта.

Шаблон-пример корректных вводимых УРЛ- адресов следующий:

  • «http://htaccess.net.ru/error/my-error.php»
  • «http://www.htaccess.net.ru/error/my-error.txt»
  • «/error/404.shtml»

Error Document:

Введите URL которые Вы хотите использовать в качестве кодов ошибок сервера. Один URL (путь к файлу) — в 1 поле.

При возникновении ошибки 4xx или 5xx посетитель Вашего сайта увидит в браузере сообщение от сервера, которое вряд ли можно назвать предельно понятным рядовому пользователю. Apache предоставляет возможность выдать вместо аскетичного технического текста, не изобилующего деталями, свою страницу, где Вы можете человеческим языком объяснить пользователю, что произошло и что делать.

Рассмотрим примеры. Допустим, пользователь обратился к документу, которого не существует на сервере.

Такое может произойти по разным причинам: где-то осталась ссылка на уже удаленный Вами документ, кто-то дал пользователю неправильную ссылку или пользователь допустил ошибку, когда набирал адрес страницы в браузере. В этом случае сервер выдаст ошибку 404 (Not Found) и текст вида «The requested URL такой — то was not found on this server».

Можно выдать вместо этой строчки документ в дизайне Вашего сервера, в котором написать что-то типа «Произошла ошибка — запрошенный документ не найден. Попробуйте уточнить адрес, воспользоваться поисковой системой или начать просмотр сайта с первой страницы». Такое сообщение пользователь поймет гораздо лучше. Более того, пожалуй, выдача дружественных, понятных любому посетителю сообщений является хорошим тоном.

Итак, создаем документ, который будем показывать пользователю в случае возникновения ошибки 404.

Информационно красиво оформленные ошибки кодов ответов веб сайта http://htaccess.net.ru можно увидеть по ссылкам ниже.

Итак в файле «. htaccess » дописываем сверху следующие строки например:

# содержание файла .htaccess:

# следующие директивы файла .htaccess оставлены для общего примера

AddType text/html .shtml

AddHandler server-parsed .shtml

Теперь при возникновении ошибки 404 пользователь увидит именно Ваш файл. Еще можно скриптом или с помощью SSI вставить в выдаваемый документ какую-нибудь служебную информацию, которую пользователь должен будет привести, если решит обратиться за комментариями к Вам по e-mail. Таким образом можно обработать практически все негативные коды возврата. Конечно, можно обработать и позитивные коды, но смысл этого не до конца ясен, равно как непонятно в какой ситуации это может пригодиться.

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

Приведем еще несколько возможных вариантов использования данной директивы для создания собственных ответов на ошибочные ответы веб сервера Apache ErrorDocument веб мастером в .htaccess:

# в случае ошибки «SERVER ERROR» показывается страница с другого ресурса:

ErrorDocument 500 http://htaccess.net.ru/cgi-bin/500.pl

# в случае ошибки «NOT FOUND» показывается страница с того же веб-сайта:

ErrorDocument 404 /cgi-bin/error404.pl

# в случае ошибки «FORBIDDEN» показывается текстовое сообщение, которое

# обязательно должно начинаться с кавычки, кавычка в сообщении не выводится:

ErrorDocument 403 «Sorry can’t allow you access today, 403 Status Codes Apache

Как вы видите все довольно просто.

Для проверки работоспособности 404 ошибка наберите любой не существующий адрес странице на сайта, например http://htaccess.net.ru/index777.php

Для вызова 403 ошибки попробуйте открыть например запрещенный для общего доступа файл например http://htaccess.net.ru/.htaccess

Читайте также:  Почему не работают механические часы

Недавно освободившиеся домены с PR и ТИЦ:

Сервис http://reg.ru — крупнейшего хостинга и регистратора доменов позволяет подать заявку на регистрацию доменного имени, которое недавно было освобождено прежним Администратором. Освобожденные домены часто имеют высокие показатили ТИЦ и PR и могут быть интересны к приобретению.

Использовать промокод при оплате услуг сможет каждый из зарегистрировавшихся только один раз. Поэтому вначале добавляем в корзину все что нужно, а затем одной операцией вводим купон и проводим оплату.

Источник

Анчоус в масле

Блог одинокой рыбки запутавшейся в сетях

Забавный глюк 404 ошибки в WP

Сидел себе ночью, кропал на основной блог по поводу очередной кинишки- смотрю человек на мауле стонет, что не работает 404 ошибка под WP. А до этого также кидал сей вопрос в seo-чат в скайпе, к которому меня подрубили недели две назад, но вопрос был проманкирован.

Стали разбираться: 404.php, чьё наличие для отработки 404 ошибки обязательно, в теме имеется, но отклик сервера 200OK, причем без редиректа на ошибку, а именно с ошибочным урлом. То есть таким макаром, при желании, можно загнать в индекс поисковиков мульён страниц и вызвать демонов АГС и Пандеца.

Покрутили переменные в 404.php – не помогло. Попробовали добавить переменную ErrorDocument 404 /файло в .htaccess – тоже безрезультатно.

Так или иначе, пришли к разбору пермалинков (site.ru/wp-admin/options-permalink.php), через которые настраивается ЧПУ на CMS WordPress и тут оказалось, что когда в директивах .htaccess добавлены строки отвечающие за ЧПУ, а сами пермалинки работают по дефолту через номер поста, выводя страницу как site.ru/?p=NNN то 404.php банально не отрабатывается.

Как только пермалинки были изменены на любой из предлагавшихся ЧПУ- ошибка исчезла и сайт стал отдавать то что и надо, а именно Not Found.

Еще по теме:

Автор: anchous | Категория: сайты | 10 23rd, 2013 |

17 Комментариев

  1. Denis сказал:
    after publication. —>March 4th, 2015 at 19:24

Что вы именно сделали? что именно поменяли в файле? А то у меня такая проблема, а решения найти не могу

anchous Reply:
March 5th, 2015 at 02:28

возможно это покажется странным, но сделал именно то что описано в статье

Здравствуйте! У меня тоже интересная штука. Статус 404 не отдается, если в адресе только цифры. Например: _http://site.ru/contacts/111

Если же добавить хоть одну буковку, то срабатывает правильно: _http://site.ru/contacts/111пп

возможно это покажется странным, но сделал именно то что описано в статье
—–
Так что именно написано в статье?
“Как только пермалинки были изменены на любой из предлагавшихся ЧПУ” – что такое пермалинк в этом файле и что такое предлагавшийся чпу?

anchous Reply:
August 8th, 2016 at 20:42

не уловил, вы предлагаете мне вам объяснить что такое ЧПУ и как он настраиваетесь в “Permalink Settings”, или что?

Ты, автор, прям капитан очевидность. Только надо суть раскрывать, а не поверхностное “сделал то, что надо было сделать”, потому что люди сюда приходят, чтоб понять, что именно надо сделать, а не порадоваться за тебя, что ты сделал что-то…

anchous Reply:
October 23rd, 2016 at 16:34

ты, дружок, бабуле своей советы давай, как ей борщ варить.
если васяны не знают элементарных вещей из WP, то здесь не ясли для нубья. кури _http://www.ozon.ru/context/detail/id/30455020/

Добрый день.
А как настроить 404.php без переключения типа ссылок?
Есть сайт. Проиндексировано почти 1000 страниц именно так: site.ru/?p=3333
Если изменить, вся индексация коту под хвост.
Только недавно заметили, что 404 не обрабатывается.

anchous Reply:
January 22nd, 2017 at 23:05

кто ж иго знает? вероятно что то мутить на основе рерайтов в .htaccess

либо создать страницу ошибки как пост и указать её как обработчик 404 в .htaccess
ErrorDocument 404 /?p=666

у кого в вебмастере яндекса выводится ответ сервера 200, вместо 404 попробуйте переименовать .htaccess в .htaccess.bak и проверить, если стал ответ 404, то скорее всего неправильно настроено чпу, к примеру, встречал, что на сайте настроили концовку html, т.е. http://site.ru/page.html, а в .htaccess не внесли правки

– Что вы именно сделали? что именно поменяли в файле?
– не уловил вопроса…

…и раздувание щек в собственной важности. Хаха, классика.

anchous Reply:
June 20th, 2017 at 13:06

еще один кусок идиота, не способный воспринять написанное?
ты если глазики продерешь, в которые видимо долбишься, то, вероятно, сможешь заметить, что “не уловил вопроса” следует за серией нубских вопросов “разжуйте мне фсе, поскоку мне религия не позволяет пользоваться гуглом”

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

anchous Reply:
December 29th, 2017 at 22:07

еще одна тупая обезьяна прибыла? доставляет конечно, как тупорезов корежит – они лучше гневный псто напишут, чем пойдут почитать, что такое ЧПУ ))

Бля! Спасли! ) Я уже что только не перепробовал )) а оказалась такая херня под носом!

Незнаю как.Но мне помогло ,спс вам))

Вот спасибо тебе, добрый человек с планеты Земля!

Источник

Ошибка 404 на htaccess

Сегодня хочу поднять тему создания 404 ошибки средствами apache через файл .htaccess . Я уже расказывал вам о том, как можно создать ошибку 404 на php, а так же о том как сделать 301 редирект на htacces, — пришло время рассказать о htaccess 404 ошибка. В этом уроке попробуем сделать htaccess 404 redirect таким образом, чтоб ошибка 404 была видна сразу, без 301 и 302 редиректа и без использования PHP, чтоб не нагружать его.

Читайте также:  Шкода октавия не работает кнопка центрального замка

Редирект 404 на htaccess

Это не опечатка, действительно ошибка 404 создается аналогично 301 редиректу в .htaccess но с некой оговоркой.

Предположим, что у нас на сайте есть ненужные ссылки с GET параметрами, например ваш_сайт/?more=1 и мы хотим запретить их показывать отдав ошибку 404 в ответ.

Забрасываем этот код в файл htaccess в корне вашего сайта WordPress и смотрим результат:

Вот так вот, браузер получает ошибку 404 через redirect. Аналогичное сообщение получит и поисковый бот и через время выбросит этот url из своего кеша.

Если вам нужно заблокировать какую нибудь страницу WordPRess, например ваш_сайт/privet-mir/, можно написать код вот такого плана:

Результат работы предсказуемый:

Я тестировал этот результат только на CMS WordPress, если у вас не получается использовать 404 редирект htaccess на другой системе управления не стоить расстраиваться, по всей видимости код для них может быть похожий. Как альтернатива попробуйте вот такой код:

Он не работает на вордпресс, но работает на сайтах без системы управления контентом.

Ошибка 404 htaccess

Если вы внимательно тестировали результат работы, то наверное заметили вот эту дурацкую ошибку:

Как указать страницу ошибки 404 на htaccess

Для того, чтоб указать какая страница отвечает за обработку 404 ошибки мы можем написать вот такой код перед вызовом нашей ошибки:

Полный код будет выглядеть приблизительно вот так тогда:

И тут как говорится за что боролись, на то и напоролись:

Перед ошибкой 404 мы получаем ошибку 302 и это как говорят СЕО шники очень плохо. В общем если ваш заказчик не СЕО специалист этот вариант прокатит, в альтернативном варианте надо использовать PHP для генерации ответа. Об этом я писал вот здесь: 404 c php

Если мне удастся решить проблему с htaccess 404 redirect 302 я обязательно напишу вам об этом в этой же теме. На данный момент решение проблемы не найдено. Решение есть, описал его ниже.

Аналогично можно было не придумывать каруселей и сделать 404 редирект на htaccess через 301 редирект, разницы по сути никакой, только проще и быстрее:

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

Решение проблемы 302 перенаправления при ответе 404

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

В корне сайта создаем файл «error.html» и туда забрасываем хтмл код, который генерирует ваш сервер WordPress. Вот результаты работы:

и вот же правильная страница ошибки без редиректа 302:

Теоретически на этом все. Теперь вы знаете как делается ошибка 404 на htaccess.

Если вы имеете другие решения htaccess 404 redirect или перенаправление на 404 без редиректа 301 и 302 буду рад вас выслушать. Обращайтесь, пишите комментарии, жмите лайк.

а у меня вроде работает такой редирект:
RewriteCond % !-f
RewriteCond % !-d
RewriteRule ^(.*)$ — [L,R=404]
ErrorDocument 404 /404.shtml

Но почему то тольок для главной страницы. На другизх страницах, после такой вставки почему-то портится дизайн сайта, т.е изображение и другие кажись стили слетают. Почему так? На главной странице вроде всё ок.

Помогите справиться с проблемой. Есть сайт, который сейчас работает на wp, до этого работал или на джумле или на opencart. Остались хвосты в виде url сайт/?route=product/category&path=44

требуется все эти хвосты перевести в 404.
Пробовал добавить в .htaccess такой код:
RewriteCond % ^.*route.*
RewriteRule . — [R=404,L,NC]

но это не помогает, все равно 200 ОК отдает.

Добрый день.
Если все правильно, то этот код должен работать, только его нужно добавлять в самом верху и вы забыли о ErrorDocument 404 /error.html надо еще создать файл с ошибкой в корне, error.html хотя бы для теста.

Если не будет работать то этот вариант точно вам поможет
RewriteCond % ^.*route.*
RewriteRule ^(.*)$ http://%/404/? [R=301,L]
будет редирект вместо 404
главное писать код в самом верху файла хтацес.

Если нет то есть еще пхп ответ 404 вот тут о нем писал https://help-wp.ru/seo-wordpress-kak-otpravit-oshibku-404-s-php-chasti/

писал вот такой код полностью.

RewriteCond % ^.*route.*
RewriteRule . — [R=404,L,NC]
# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond % !-f
RewriteCond % !-d
RewriteRule . /index.php [L]

и не хочет гад.
Не сочтите за наглость, приведу конкретный пример.

вот этой странице нужно прописать 404.

да код вроде правильный, но в самом верху не хватет строчки ErrorDocument 404 /error.html ну и собственно сам файл в корне создайте.

Если не помогает можете открыть header.php вашей темы и забросить в самый верх вот такое:

это точно поможет

ПРивет очень круто искал долго решения. Но почему то оно мне не помогло идет все равно редирект на главную. Ситуация следующая сайт спамят беками на страницы моего сайта — site.ru/?page=(-url-) (все время разные сайты). Использовал код # BEGIN WordPress

RewriteCond % ^.*page=.*
RewriteRule . — [R=404,L,NC]
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond % !-f
RewriteCond % !-d

RewriteRule . /index.php [L]

# END WordPress
# END WordPress

Но при переходе на страницу site.ru/?page=(-url-) почему то переход идет на мою главную страницу. Подскажите может чтото сделать или кто-то знает. Спасибо.

Добрый день.
Вы видимо эту часть упустили ErrorDocument 404 /error.html

+ у вашем случаи не важно будет там 301 или не будет, можно смело через 301 редирект то же самое делать, на страницу вашсайт/404 или любую другую, хотя должно и через ошибку 404 получится

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond % !-f
RewriteCond % !-d
ErrorDocument 404 /error.html
RewriteCond % ^.*page=.*
RewriteRule . — [R=404,L,NC]
RewriteRule . /index.php [L]

Не работает)
Поставил 301
Redirect 301 /?page=http://(-url-) (-url-)
Также все равно на главную.

Читайте также:  Как настроить программируемую розетку

Ваш код должен быть выше ВП — шного.
Больше ничего не подскажу, так как чтоб понимать больше нужно смотреть конкретный сайт изнутри.

Здравствуйте.. понравилась статья..но у меня другой вопрос. Блог на ВП, а как сделать чтобы переводило на ошибку 404 со страниц с регистром HTTPS ..Просто у меня не получилось из-за сложности шаблона перейти на этот регистр но Яндекс уже успел проиндексировать и склеить зеркала, и теперь пользователи переходя по ссылке с поисковика натыкаются на фразу «Соединение не защищено» и т.п. а так хотя бы на блог с предложением других статей попадали (у меня так настроена при ошибке 404) ..Спасибо за ответ.

Добрый день.
Я никогда такого не делал и сейчас нет времени тестировать, но мне кажется вот такой вариант в htaccess должен работать.
Предположим что у вас за 404 отвечает страница вашсайт/404/, вы хотите чтоб она была без http, код ниже должен работать но я не уверен, может и не работать:
RewriteEngine on
RewriteCond % on
RewriteCond % ^/404.*
RewriteRule ^(.*)$ http://%/%? [R=301,L]

ну или в этом направлении нужно двигаться. Там единственный момент что ВП может вмешаться и все равно менять на https и тогда будет зацикливание

SOS
Не могу победить

php_flag register_globals on
RewriteEngine on
RewriteRule ^([-,0-9,a-z]+)$ /index.php?area=1&p=static&page=$1

Стандартное сообщение с перенаправлением на главную

Создал new404 (-url-)

Если вместо $1 вставляю new404, то все ссылки идут только на неё.

Помогите, пожалуйста, задействовать при ошибке 404 перенаправление на new404 и убрать стандартное сообщение.

Немного не понял что вам нужно сделать. Пробовали код вставлять из этой статьи, он 100% рабочий под ВП я проверял.

index.php?area=1&p=static&page=new404
Поставил, но на него реагируют только ссылки с любым или несуществующем расширением.
У меня страницы без расширения вызываются.
У меня Koobi.
Мне нужно перенаправление на (-url-)

ErrorDocument 404 /index.php?area=1&p=static&page=new404

Оказывается, что проблема состоит не в том, чтобы корректно настроить правила в конфигурационном файле .htaccess , а в том, что при запросе несуществующих страниц на сайте вместо 404 кода отдается 200

остается только скомбинировать ваш хтаццес и этот ответ

У меня страницы tpl.
При вставке ПХП получается

Выше Вы показали пример, как отдать ошибку 404 странице с урлом типа «/?more=1»
А подскажите пожалуйста, что нужно прописать в .htaccess, чтобы ошибка 404 присваивалась не только «/?more=1», а всем страницам, содержащим в себе идентификатор «/?more=».

То есть, и «/?more=1», и «/?more=2», и «/?more=3» и так далее.

Добрый день.
Все остается как есть, только меняем первую строчку с такого варианта

Если посмотреть документацию, то .* это любое количество любых символов 🙂

Будьте добры, как сделать, чтобы вместо главной страницы при любом ошибочном урл был код 404. Я понимаю, что в Hhtaccess надо прописывать конкретную страницу? А что делать в моем случае?

Добрый день.
О какой ЦМС мы сейчас говорим? — если ВП то он автоматически это делает, ничего никуда не нужно прописывать

Не знаю с какого источника вы нашли этот пример, но он реально работает. Получается чистая ошибка 404 на htaccess без редиректов и ошибок 302. Большое вам спасибо.

Да вы я смотрю прям извращенец. Всякое встречал, но чтоб через такую за. цу делать ошибку 404 еще не видал.
Не проще из пхп послать код 404 .

1) У меня нет .htaccess
2) Как сделать так, чтобы при переходе на не известную ссылку сайта, допустим: (-url-) — выдавала страница 404.html. У меня открывается, но только с такого: (-url-). А я хочу чтобы выдавала на всех длинных неизвестных стр. как допустим: (-url-). -Понимаете?

Что можно в код добавить? (Пробовал добавить такие как в конце: . -не пойдет.)

Добрый день.
Никто не мешает создать файл .htaccess Создавать нужно в корне сайта. Винде может не понравится такое имя, лучше воспользоваться или панелью хостинга или тоталом или файлзилой.
Если у вас ВП то решение проблемы в последнем абзаце

Только privet-mir замените на свое bla.

Если не ВП то используйте 301 редирект

1) .htaccess с панели сервера не создается, точнее создается, но она сразу исчезает. (создаю новый файл > переименовываю > сохраняю, а она выдает ошибку) — ОК.

2) Созданный файл с компа на NotePade++ — .htaccess при переносе на Cpanel > Pablic. — Тут же исчезает, искал во всех папках, и не нашел.

3) Создал 404.html по другой схеме, но она работает только при переходе в неизвестную стр.сайта к примеру: 111.ru/sddfg — Здесь выдаст 404 файл, но если написать 111.ru/sddfg/fgb — то 404 файл не появляется. Пытался итак и так, но без результатно.

Вот тут https://help-wp.ru/seo-wordpress-kak-otpravit-oshibku-404-s-php-chasti/ описанно как сделаь ответ 404 на пхп. Думаю в вашей ситуации это единственно правильное решение. Нужно только найти кто принимает на себя неправильные страницы

Не плохое решение, автору респект. Сам хотел придумать и заставить WordPress правильно отдавать 404 ошибки на htaccess но чет не получалось. Собственно мудрил как и вы но не придумал что делать с 302 ошибой. По сути я вместо 404 получал 302 и это очень плохо, вам подтвердит любой нормальный сеошник. Это все равно что сделать запрет на директорию, она как бы есть но поисковики ругаются, хотя страницу можно закрыть и так :))))))

На пхп ошибка 404 делается намного проще. Зачем тогда выдумывать велосипед и делать ошибки 404 на htaccess ?? Какая в этом логика. С точки зрения СЕО 404 ошибка она и в африке 404, как не крути. Ведь так?

Источник

Adblock
detector