редирект 404 на главную htaccess
Анчоус в масле
Блог одинокой рыбки запутавшейся в сетях
Делаем редирект 404 ошибки на морду сайта
Прикупил тут с оказией дроп с 6к бэков, причем не только разных спамных, но и gov & edu, так что захотелось мне посмотреть, что будет если приклеить все внутряки, которых видимо было огромное количество и на которые как раз и ссылались, к морде. Для чего возникла задача редиректить все 404 ошибки на морду сайта.
RewriteEngine on
ErrorDocument 404 /index.php
У меня он по какой то не понятной причине не заработал, ибо все равно вылетала страницы ошибки, как раз спеицально созданная в теме, под именем 404.php, так что мне пришлось её немного подправить, добавив в начало файла следующую строку:
После чего все зашуршало. Так что можно просто создать такой файлец 404.php и поместить его в корень темы /wp-content/themes/your-theme/ после чего все должно зашуршать.
Для WP, под который я все и мутил, оказался даже есть плагин 404 Redirection который вроде как редиректит все 404 ошибки на заглавную страницу, но поскольку у меня все заработало и без этого, то на плагин я забил.
Еще по теме:
Автор: anchous | Категория: сайты | 02 7th, 2012 |
12 Комментариев
Добрый день!
Говорят, что поисковики затирают несуществующие страницы 404 из своей базы.
А если сделать со всех 404 редирект на домен – то битая ссылка остается в базе поисковиков + к ней добавляется инфо с главной, создавая дубли. Кто сталкивался на своем опыте? Подскажите, не хочется нормальный сайт топить, а потом опять выплывать…
Спасибо.
anchous Reply:
January 30th, 2013 at 02:49
какие то у вас постапокалиптические фаназии на тему склейки
Добрый день.
А как к этому относятся ПС? Не посчитали типа поисковым спамом, вроде как перенаправление пользователя без его ведома?
anchous Reply:
January 31st, 2017 at 00:48
полагаю, что нормально относятся. если есть бояки то можно поставить таймаут редиректа
Не рекомендую редиректить 404 на главную. С точки зрения SEO это – серьезная ошибка. Гораздо лучше сделать нормальную 404 страницу.
И еще стоит посмотреть ссылки, которые ведут на несуществующие страницы. Если их много и особенно, если есть с сильно трастового сайта, то стоит и создать страницу с таким адресом, чтобы не терять ссылочный вес с траста, а потом ссылками с нее распределить вес на нормальные страницы.
anchous Reply:
October 13th, 2018 at 19:28
с точки зрения SEO – это ошибкой не является. и да, ссылка с траста никуда не потеряется, особенно при редиректе на морду. Единственное что может потеряться анкорный вес, если ссылка идет по важному ключу.
Вот разве только в этом случае имеет смысл затачивать новую страницу.
Большинство точек зрения по такому раскладу среди сеошников за то, что так делать нельзя. Ковырял раньше эту тему.
Я имел в виду анкорный вес, а раз дроп, то ключ в ссылке на него почти наверняка тематический и терять бонус жалко.
Еще плагин WP Redirect отлично работает
Для сео это называется ошибка 404-soft, что не очень хорошо, не рекомендую этого делать.
anchous Reply:
July 9th, 2019 at 17:19
софт-404 это про 2хх ответ. как не сложно догадаться 301 ≠ 2XX
301 как раз таки непосредственно про 404-soft ошибку, почитайте про это
anchous Reply:
July 11th, 2019 at 21:23
вот читаю, говорят что вы не тащите в теме ))
На хостинге RU-CENTER в настоящее время используется веб-сервер Apache версии 2.4.
Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если вы желаете с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта
Пожалуйста, будьте внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов мы рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.
1. Перенаправление доменов c синонима сайта на основной домен с кодом 301
Перенаправить запросы на domain.ru с любого из синонимов сайта
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]
Перенаправить запросы на www.domain.ru с любого из синонимов сайта
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]
Эти правила рекомендуется размещать в самом начале файла .htaccess.
2. Постоянное перенаправление с кодом 301
Redirect 301 /page.html http://www.domain.ru/new_page.html
Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на domain.ru, вы можете написать:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %
RewriteRule ^period/$ http://domain.ru/ [L,R=301]
3. Переопределение страниц ошибок
#401 Авторизация не выполнена
ErrorDocument 401 http://domain.ru/errors/401.html
#403 Доступ запрещен
ErrorDocument 403 http://domain.ru/errors/403.html
#404 Страница не найдена
ErrorDocument 404 http://domain.ru/errors/404.html
#500 Внутренняя ошибка сервера
ErrorDocument 500 http://domain.ru/errors/500.html
Соответствующие файлы страниц ошибок (401.html, 404.html и др.) необходимо разместить в каталоге
Для того чтобы при случайном упоминании прямых ссылок на такие страницы они не проиндексировались в поисковых системах, рекомендуется:
User-agent: *
Disallow: /errors
/ваш_домен/docs/errors/.htaccess, в котором прописать
4. Постраничное перенаправление запросов на другой домен c кодом 301
Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://domain.ru/main будет переадресован на http://www.newdomain.ru/main:
Redirect 301 / http://www.newdomain.ru/
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]
5. Ограничение доступа к сайту по IP
Запретить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3
Order Allow,Deny
Allow from all
Deny from 123.4.5.6 123.5.4.3
Запретить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:
Order Deny,Allow
Deny from all
Allow from 123.4.5.6 123.5.4.3
Запретить доступ к сайту для всех:
6. Переопределение главной страницы сайта (индексного файла каталога)
Сделать главной страницей файл menu.html:
8. Запрет выдачи листинга каталога
В случае отсутствия в папке главной страницы (индексного файла), при обращении без указания конкретного имени файла в запросе будет выдан список всех файлов, находящихся в каталоге. Для того чтобы запретить отображение листинга каталога, добавьте в файл .htaccess строку:
Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).
10. Блокировка переходов со сторонних ресурсов
Для запрета перехода c baddomain.ru на domain.ru добавьте в .htaccess следующее:
Если требуется запретить переходы с нескольких доменов, то используйте следующие директивы
В файле .htaccess использование кириллицы не допускается. При составлении правил перенаправления для кириллических доменов необходимо указывать имя домена в punycode. Узнать имя домена в punycode можно с помощью сервиса Whois.
Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:
RewriteEngine on
RewriteCond %
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1 [R=301,L]
В этом случае ваши посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.
12. Перенаправление с HTTP на HTTPS и обратно
Для работы перенаправления на сайте должен быть установлен действительный SSL-сертификат.
Перенаправить запросы на https://domain.ru
Перенаправить запросы на http://domain.ru
3. Диагностика ошибок
Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.
Как сделать редирект 404 ошибки
Если вы еще не настраивали ее на своем блоге, займитесь непременно. Помимо грамотной настройки, мы научимся создавать красивое и оригинальное оформление для 404 страницы WordPress. Страницы сайта иногда удаляются администратором по многим причинам, что вызывает ряд проблем для посетителя.
Если запрашиваемая страница отсутствует на сервере, то пользователю выдаётся 404 ошибка, то есть белая страница с непонятными для многих символами.
Что такое ошибка 404?
Ошибка 404 Not Found возникает, когда сервер не может найти страницу, запрошенную пользователем.
Попробуйте дописать в адресной строке к домену какой-нибудь набор букв. Например, «pro-wordpress.ru/jfgfjgh» и вы попадете на страницу 404, которая сообщает вам, что по введенному адресу не существует страницы.
Чаще всего причиной ошибки 404 является то, что когда-то существовавшая страница, была удалена. А ссылки на нее остались, скажем, на других сайтах, по которым переходят пользователи и попадают на страницу 404. Если такие ссылки на несуществующие страницы (битые ссылки) есть на вашем сайте, с ними обязательно нужно бороться.
Как решить проблему 404 ошибки?
Просто. Нужно перенаправить пользователя на нужную страницу!
Тут есть много вариантов:
1. перенаправить на специальную страницу 404
2. перенаправить на страницу поиска
3. перенаправить на главную страницу
4. перенаправить на любую выгодную страницу сайта
Всё это делается с помощью файла .htaccess
1. редирект на специальную страницу 404
ErrorDocument 404 /page404.html
2. редирект на страницу поиска
ErrorDocument 404 /search.html
Имя страницы поиска пишем такое, какое есть на самом деле.
3. редирект на главную страницу
4. редирект на любую другую страницу
ErrorDocument 404 /reklama.php
Вставляем название любой страницы, посещение которой на ваш взгляд может принести пользу вашему сайту (в нашем случае — reklama.php).
Редирект при ошибке 404 сохранит посетителей на вашем сайте, которые возможно потом станут постоянными.
Настройка 404 WordPress
Давайте перейдем непосредственно к настройке ошибки 404 в WordPress. С технической стороны настраивать тут и нечего, заголовок ответа сервера будет отдаваться как надо, в WordPress это уже настроено.
Скажу сразу, что если вы совсем новичок и не хотите ковыряться в коде, можно сделать настройку с помощью плагина, об этом в конце статьи.
В активной теме блога есть файл 404.php, который отвечает за вывод данной страницы. Вам остается только изменить его содержание, открыв файл для редактирования. О том, как редактировать файлы шаблона, максимально подробно описано в соответствующей статье.
Если вдруг в вашем шаблоне нет такого файла, скопируйте файл single.php, переименуйте в 404.php и переделайте его следующим образом:
Почему страница 404 для WordPress так важна
Похожие записи
Чтобы решить проблему с зеркалами для поисковых систем применяют 301-й редирект с домена, имеющего префикс www, на…
Составление собственной страницы ошибки 404 не является обязательным, но все-таки оно крайне желательно для поддержания…
Чтобы поисковые системы узнали о том, что вы создали в своём блоге новый пост, их…
Практически каждый день сталкиваюсь с проблемами пользователей после вмешательств в htaccess. Не говоря уже о создаваемых постоянно темах на форуме с просьбами о помощи.
Порой из-за какой то ерунды типа изменения адреса одного товара происходит несколько страниц писанины бреда и конструированию огромных полотен правил.
Что НЕЛЬЗЯ делать через htaccess
В интернете десятки тысяч инструкций просто копируемых друг у друга десятилетиями. Очень многие из них вредны, т.к. были актуальны для сайтов на голом HTML без формирователя ЧПУ. Современные CMS самостоятельно строят формат адресации на сайте и нельзя вмешиваться в это через htaccess.
Наиболее распространенные вредные правила:
Что не нужно делать через htaccess
Множество единичных редиректов
Распространенные последcтвия вмешательства в htaccess
Часто ошибки всплывают со временем, когда обнаруживается выпадение страниц из поиска и идет разбор причин.
Когда нужно делать редиректы через htaccess
В глобальных правилах: за счет работы на более низком уровне, apache позволяет снизить расход ресурсов, т.к. их не много и требуется применение ко всем страницам.
Редирект с www на без оного, или наоборот
Редирект на https
Глобальные редиректы по маске
Пример как убрать product/ из адреса:
⚠ При наличии внешней ссылочной массы, желательно не менять адресацию на сайте, а перестроить формирователь ЧПУ и обойтись без редиректов.
⚠ Все глобальные правила дoлжны идти перед правилами CMS.
⚠ Правило WWW должно идти раньше чем https для исключения лишнего звена редиректа
Когда делать редиректы силами php (не CMS)
В случаях когда требуется настроить редиректы с адресов вида /product_info.php?products_id=123, /product/?id=345, и т.д., а именно когда есть возможность обратиться напрямую к php-файлу без инициализации CMS.
Разберем на примере site.com/product_info.php?products_id=XXX.
Создаем файл product_info.php в корне, где будет список редиректов и мини скрипт
не забываем в htaccess добавить в исключения путь /product_info.php* дабы избежать цепочек редиректов
Требование к менеджеру редиректов в CMS
Поиск/Проверка/Перебор не должен подключаться при каждом обращении к сайту, а только если страница не существует.
Разделение правил на части
Грамотное разделение правил на части позволяет сэкономить ресурсы. Нет необходимости перебирать правила там где они заведомо не сработают.
Возможность использования дополнительных данных
Менеджер редиректов может использовать функционал CMS для получения ряда данных, которые затем могут использоваться в механизме автоматизации.
Когда делать редиректы силами CMS в менеджере редиректов
Нет опыта и квалификации в работе с htaccess
Последствия деятельности шаловливыми ручками описал выше. Даже имея опыт, часто можно допустить ошибку/опечатку случайно.
Множество правил
Использование инструмента CMS не приводит к засорению htaccess и ряду сопутствующих проблем.
Да и банально намного удобнее добавлять/удалять/следить/редактировать.
Правила не являются глобальными
Если взять средний сайт с 500 уникальными посетителями в день и средней глубиной 3. Это минимум 1500 обращений в день, на самом деле в разы больше. В неделю же минимум 10 тыс. Плюс боты. И если повезет одно обращение будет к искомой странице с редиректом, ради него будет 10 тыс раз читаться правило из htaccess.
Дополнительный функционал
Ошибка 404 на htaccess
Редирект 404 на 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
В корне сайта создаем файл «error.html» и туда забрасываем хтмл код, который генерирует ваш сервер WordPress. Вот результаты работы:
и вот же правильная страница ошибки без редиректа 302:
Теоретически на этом все. Теперь вы знаете как делается ошибка 404 на htaccess.
Если вы имеете другие решения htaccess 404 redirect или перенаправление на 404 без редиректа 301 и 302 буду рад вас выслушать. Обращайтесь, пишите комментарии, жмите лайк.
Но почему то тольок для главной страницы. На другизх страницах, после такой вставки почему-то портится дизайн сайта, т.е изображение и другие кажись стили слетают. Почему так? На главной странице вроде всё ок.
Помогите справиться с проблемой. Есть сайт, который сейчас работает на wp, до этого работал или на джумле или на opencart. Остались хвосты в виде url сайт/?route=product/category&path=44
но это не помогает, все равно 200 ОК отдает.
Добрый день.
Если все правильно, то этот код должен работать, только его нужно добавлять в самом верху и вы забыли о ErrorDocument 404 /error.html надо еще создать файл с ошибкой в корне, error.html хотя бы для теста.
Если не будет работать то этот вариант точно вам поможет
RewriteCond %
RewriteRule ^(.*)$ http://%
будет редирект вместо 404
главное писать код в самом верху файла хтацес.
Если нет то есть еще пхп ответ 404 вот тут о нем писал https://help-wp.ru/seo-wordpress-kak-otpravit-oshibku-404-s-php-chasti/
писал вот такой код полностью.
и не хочет гад.
Не сочтите за наглость, приведу конкретный пример.
вот этой странице нужно прописать 404.
да код вроде правильный, но в самом верху не хватет строчки ErrorDocument 404 /error.html ну и собственно сам файл в корне создайте.
Если не помогает можете открыть header.php вашей темы и забросить в самый верх вот такое:
# END WordPress
# END WordPress
Но при переходе на страницу site.ru/?page=(-url-) почему то переход идет на мою главную страницу. Подскажите может чтото сделать или кто-то знает. Спасибо.
Добрый день.
Вы видимо эту часть упустили ErrorDocument 404 /error.html
+ у вашем случаи не важно будет там 301 или не будет, можно смело через 301 редирект то же самое делать, на страницу вашсайт/404 или любую другую, хотя должно и через ошибку 404 получится
Не работает)
Поставил 301
Redirect 301 /?page=http://(-url-) (-url-)
Также все равно на главную.
Добрый день.
Я никогда такого не делал и сейчас нет времени тестировать, но мне кажется вот такой вариант в htaccess должен работать.
Предположим что у вас за 404 отвечает страница вашсайт/404/, вы хотите чтоб она была без http, код ниже должен работать но я не уверен, может и не работать:
RewriteEngine on
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ http://%
ну или в этом направлении нужно двигаться. Там единственный момент что ВП может вмешаться и все равно менять на https и тогда будет зацикливание
SOS
Не могу победить
php_flag register_globals on
RewriteEngine on
RewriteRule ^([-,0-9,a-z]+)$ /index.php?area=1&p=static&page=$1
Стандартное сообщение с перенаправлением на главную
Помогите, пожалуйста, задействовать при ошибке 404 перенаправление на new404 и убрать стандартное сообщение.
Немного не понял что вам нужно сделать. Пробовали код вставлять из этой статьи, он 100% рабочий под ВП я проверял.
index.php?area=1&p=static&page=new404
Поставил, но на него реагируют только ссылки с любым или несуществующем расширением.
У меня страницы без расширения вызываются.
У меня Koobi.
Мне нужно перенаправление на (-url-)
ErrorDocument 404 /index.php?area=1&p=static&page=new404
остается только скомбинировать ваш хтаццес и этот ответ
У меня страницы tpl.
При вставке ПХП получается
То есть, и «/?more=1», и «/?more=2», и «/?more=3» и так далее.
Добрый день.
Все остается как есть, только меняем первую строчку с такого варианта
Будьте добры, как сделать, чтобы вместо главной страницы при любом ошибочном урл был код 404. Я понимаю, что в Hhtaccess надо прописывать конкретную страницу? А что делать в моем случае?
Не знаю с какого источника вы нашли этот пример, но он реально работает. Получается чистая ошибка 404 на htaccess без редиректов и ошибок 302. Большое вам спасибо.
Только privet-mir замените на свое bla.
Если не ВП то используйте 301 редирект
Вот тут https://help-wp.ru/seo-wordpress-kak-otpravit-oshibku-404-s-php-chasti/ описанно как сделаь ответ 404 на пхп. Думаю в вашей ситуации это единственно правильное решение. Нужно только найти кто принимает на себя неправильные страницы
Не плохое решение, автору респект. Сам хотел придумать и заставить WordPress правильно отдавать 404 ошибки на htaccess но чет не получалось. Собственно мудрил как и вы но не придумал что делать с 302 ошибой. По сути я вместо 404 получал 302 и это очень плохо, вам подтвердит любой нормальный сеошник. Это все равно что сделать запрет на директорию, она как бы есть но поисковики ругаются, хотя страницу можно закрыть и так :))))))