Параметры .htaccess ни как не могу справиться

Stepik Stepik   15.12.2016 17:32   750  
Всем привет. За последние несколько месяцев в поиске появилось много страниц которых не существует но при проверки в вебмастере они отдают код 200. А на сайте не срабатывает 404 при обращении к несуществующим страницам хотя в .htaccess прописано ErrorDocument 404 /404.html .
Например конструкция url
1) http://сайт.ru/файл.php/1212-ещё-что-то - при обращении к такому url загружается страница файл.php соответственно робот её видит, как другу страницу, а не http://сайт.ru/файл.php
2) Если убираем расширение файла http://сайт.ru/файлphp/1212-ещё-что-то то отрабатывает ошибка 404. 

Написал хостингу, хостинг ответил что обратитесь к разрабам))) так как проблема в файле файл.php но это по мне бред так как файл.php внутри себя имеет просто html документ.

Сайт статический без CMS, настройки .htaccess уже как только не вертел((( хотя бы понять в нём дело то?

Может кто что подскажет?? 

Заранее огромное спасибо.

Ответы на вопрос (11) Написать ответ
probot probot   15.12.2016 17:49
файл php в студию
0
Stepik Stepik   15.12.2016 17:59
Ниже в ветке пояснил
0
Сергей Паутов Сергей Паутов   15.12.2016 17:49
хотя бы показали что Вы там "навертели" в .htaccess, а то телепаты как-бы вымерли.
0
Petroff Petroff   15.12.2016 17:51
Не очень то понятно!
Вот это: http://сайт.ru/файл.php/1212-ещё-что-то должно отдавать код 200 с содержимым http://сайт.ru/файл.php
Вот это: http://сайт.ru/файлphp/1212-ещё-что-то должно отдавать 404 код, если он настроен

Вероятно, что появляющиеся страницы имеют какую-то одинаковую последовательность в урле, которую просто нужно закрыть в роботсе. htaccess тут ни при чем
0
Stepik Stepik   15.12.2016 17:58
Так, ясно. Надо подробней описывать, понял.
Содержимое фала .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.
0
Сергей Паутов Сергей Паутов   15.12.2016 18:26
в htaccess-е у Вас прописан только редирект с WWW на без-WWW и больше ничего, никакой магии там больше нет.
Возможно вся загвоздка в отработке интерпретатора (или как его там еще можно назвать), т.е. интерпретатор видит что файл с расширением 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/)
1
Stepik Stepik   15.12.2016 18:38
http://pdd-new.ru/priminenie-spec-signalov.html/img/pred-znaki/ отработал 404 ваша догадка верна. Блин но я не могу переименовать файлы в html, так как в них использую <?php
include("");?> Не знаете как "интерпретатор" )) заставить так не делать про php файл?
0
Сергей Паутов Сергей Паутов   15.12.2016 19:41
Минутку... есть у меня один могильничек с исходниками... ща попробую ченить нарыть
0
Сергей Паутов Сергей Паутов   15.12.2016 20:36
попробуйте как-то так в .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]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ blabla.php [L]

ErrorDocument 404 http://pdd-new.ru/404.html
________________________

0
Stepik Stepik   15.12.2016 22:57
Спасибо за комментарии.
В принципе вы натолкнули меня на правильный путь. Использовав команду в .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]
___________________________________
0
Сергей Паутов Сергей Паутов   15.12.2016 20:44
Хотя по большому счету нужно просто выяснить откуда берется этот мусор, который у Вас цепляется к хвосту URI.

Все может быть до банального просто, по "мусору" я так понимаю что пытаются подхватиться картинки, которые берутся не из абсолютного пути, а из относительного и просто нужно в HTML-е в <head> секции дописать следующее:

<base href="http://pdd-new.ru/" />

Тогда ВСЕ ваши картинки будут браться с корня вашего сайта, и издеваться над .htaccess-ом просто нет необходимости :)
0

Войдите, чтобы написать ответ
Вход Регистрация

Фриланс нового поколения. Всё за 500 рублей!