Всем привет. За последние несколько месяцев в поиске появилось много страниц которых не существует но при проверки в вебмастере они отдают код 200. А на сайте не срабатывает 404 при обращении к несуществующим страницам хотя в .htaccess прописано ErrorDocument 404 /404.html .
Например конструкция url
1)
http://сайт.ru/файл.php/1212-ещё-что-то - при обращении к такому url загружается страница файл.php соответственно робот её видит, как другу страницу, а не
http://сайт.ru/файл.php2) Если убираем расширение файла
http://сайт.ru/файлphp/1212-ещё-что-то то отрабатывает ошибка 404.
Написал хостингу, хостинг ответил что обратитесь к разрабам))) так как проблема в файле
файл.php но это по мне бред так как
файл.php внутри себя имеет просто html документ.
Сайт статический без CMS, настройки .htaccess уже как только не вертел((( хотя бы понять в нём дело то?
Может кто что подскажет??
Заранее огромное спасибо.
Вот это: http://сайт.ru/файл.php/1212-ещё-что-то должно отдавать код 200 с содержимым http://сайт.ru/файл.php
Вот это: http://сайт.ru/файлphp/1212-ещё-что-то должно отдавать 404 код, если он настроен
Вероятно, что появляющиеся страницы имеют какую-то одинаковую последовательность в урле, которую просто нужно закрыть в роботсе. htaccess тут ни при чем
Содержимое фала .htaccess сайта
___________________________
DirectoryIndex index.html index.php
### Редирект с www и без www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.pdd-new\.ru$ [NC]
RewriteRule ^(.*)$ http://pdd-new.ru/$1 [R=301,L]
ErrorDocument 404 http://pdd-new.ru/404.html
________________________
Проблемные url пример http://pdd-new.ru/priminenie-spec-signalov.php/img/pred-znaki/ грузит файл priminenie-spec-signalov.php а не выдаёт ошибку 404
Если в url убрать расширение фалйа конечного, например (priminenie-spec-signalovphp) получим http://pdd-new.ru/priminenie-spec-signalovphp/img/pred-znaki/ То нормально отрабатывает ошибка 404.
Возможно вся загвоздка в отработке интерпретатора (или как его там еще можно назвать), т.е. интерпретатор видит что файл с расширением PHP и данный файл есть, значит все что идет ЗА НИМ, он считает как параметры, которые Вы пытаетесь скормить данному скрипту, а там нежданчик - нет пыха, обрабатывать нечего, но это не ошибка, и данные которые идут дальше (на примере priminenie-spec-signalov.php/img/pred-znaki/) это просто данные, которые никем не учитываются.
Попробуйте (чисто для прикола) переименовать файл priminenie-spec-signalov.php в priminenie-spec-signalov.html и проверьте его доступность и поведение (т.е. перейдите на него с этими параметрами, посмотрите как он отреагирует, а именно http://pdd-new.ru/priminenie-spec-signalov.html/img/pred-znaki/)
include("");?> Не знаете как "интерпретатор" )) заставить так не делать про php файл?
___________________________
DirectoryIndex index.html index.php
### Редирект с www и без www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.pdd-new\.ru$ [NC]
RewriteRule ^(.*)$ http://pdd-new.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ blabla.php [L]
ErrorDocument 404 http://pdd-new.ru/404.html
________________________
В принципе вы натолкнули меня на правильный путь. Использовав команду в .htaccess
убираем расширение .php и все корявые url приводит к нужному виду.
__________________________________________
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php [L,QSA]
RewriteCond %{THE_REQUEST} ([^\s]*)\.php(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]
___________________________________
Все может быть до банального просто, по "мусору" я так понимаю что пытаются подхватиться картинки, которые берутся не из абсолютного пути, а из относительного и просто нужно в HTML-е в <head> секции дописать следующее:
<base href="http://pdd-new.ru/" />
Тогда ВСЕ ваши картинки будут браться с корня вашего сайта, и издеваться над .htaccess-ом просто нет необходимости :)