перенаправление на домашнюю страницу, а не на страницу с ошибкой 404!

Я работаю с PHP. У меня есть файл .htaccess, как показано ниже, и он перенаправляет на домашнюю страницу, а не на страницу с ошибкой 404:/ в чем может быть проблема? Цените помощь! большое спасибо!

ErrorDocument 404 /new/err404.html
RewriteEngine On
RewriteBase /new/

RewriteRule ^login.html$ index.php?s=login&a=loginDo [QSA,L]
RewriteRule ^logout.html$ index.php?s=login&a=logoutDo [QSA,L]
RewriteRule ^([^/]*).html$ index.php?s=$1 [QSA,L]
RewriteRule ^members/([^/]*)$ index.php?s=profile&username=$1 [QSA,L]
RewriteRule ^([^/]*)/$ index.php?s=listing&search[cityString]=$1 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?s=listing&search[neighborhoodString]=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*).html$ index.php?s=details&seo_friendly=$3 [QSA,L]

person designer-trying-coding    schedule 14.10.2009    source источник


Ответы (5)


Путь URL или ваш документ об ошибке /new/err404.html без префикса пути /new/ будет просто err404.html. И это будет соответствовать вашему третьему правилу.

Вы можете расширить это правило и исключить такие документы об ошибках:

RewriteCond $1 !^err[45][0-9][0-9]$
RewriteRule ^([^/]*)\.html$ index.php?s=$1 [QSA,L]
person Gumbo    schedule 14.10.2009
comment
Большое спасибо Гамбо. Я только что изменил /new/err404.html на err404.html. теперь он не перенаправляет на домашнюю страницу, но и не перенаправляет на страницу 404. он просто пишет err404.html в содержимом, а URL-адрес остается ошибочным:/ - person designer-trying-coding; 14.10.2009
comment
@artmania: Вы не должны перенаправлять ошибки. Ответ с кодом состояния 404 имеет другое значение, чем перенаправление. - person Gumbo; 14.10.2009
comment
Я только что отредактировал ErrorDocument 404 blabla.com/new/err404.html и работает нормально . но, как я читал на форумах, нехорошо давать перенаправления с доменом... - person designer-trying-coding; 14.10.2009
comment
Во-вторых, вы не должны перенаправлять на 404. Несуществующие страницы не должны притворяться, что они существуют! По крайней мере, это бесполезно для SEO, и Google не советует этого делать. - person Gabriel Hurley; 14.10.2009
comment
Я ценю вашу любезную помощь! Извините, я не понял, что именно вы имеете в виду :/ если страница не существует, она просто перенаправляет на err404.html. или вы имеете в виду что-нибудь об остальных кодах .htaccess? - person designer-trying-coding; 14.10.2009
comment
@artmania: Если сервер не может найти запрошенный документ, он отправит код состояния 404 и обслужит документ, указанный для ошибки 404, в вашем случае документ /new/err404.html. Это правильное поведение. Если теперь вы хотите перенаправить на что-то другое (а это произойдет, если вы укажете абсолютный URL-адрес в ErrorDocument), сервер будет использовать код состояния 302, а не соответствующий код состояния 404. А 302 означает, что «запрошенный ресурс действительно существует, но для его получения используется следующее местоположение». - person Gumbo; 14.10.2009

Я думаю, что более важный вопрос: почему вы перенаправляете 404 на свою домашнюю страницу?

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

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

Скажем, вы установили правило, которое влияет на 5000 страниц — затем приходит Google и видит 5000 URL-адресов с одинаковым содержанием — домашняя страница, откуда он узнает, что это должны были быть 404 с самого начала?

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

person jim    schedule 02.12.2009
comment
Я думаю, вы неправильно поняли вопрос, спрашивающий заявляет, что они хотят использовать страницу 404, а не перенаправлять ее на домашнюю страницу. - person Gray Ayer; 05.02.2015

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

 ErrorDocument 404 /new/err404.html

как у вас на первой линии? Вы хотите, чтобы ошибка 404 оставалась относительно каталога, в который пытается перейти пользователь?

person Anthony    schedule 14.10.2009

попробуйте эти строки в вашем .htaccess, изменив домен и имя страницы

ErrorDocument 404 http://www.yoursite.com/pagename.html
person utsav    schedule 09.01.2013

Просто через код вашей домашней страницы на страницу перенаправления. Измените код на странице перенаправления на код вашей домашней страницы. Таким образом, у вас будут /index.html и /404.html с одним и тем же кодом — ваша домашняя страница. Он Он

person wayne    schedule 20.01.2014