Файлы индексируются как директории

wwwwww
На сайте с 29.04.2011
Offline
195
935

Добрый день.

Подскажите, где может быть неверная настройка.

На сайте используется .htaccess для редиректа и установки главного зеркала, а также для авторизованного доступа к скрипту посещения ПС.

Но уже на протяжении месяца в логах посещения ботами ПС стали появляться записи вида:

site.ru/index.php/index.php

site.ru/index.php/1.php

Хотя index.php это обычный php скрипт, который на самом деле выводит статичный html + время выполнения скрипта.

Содержимое .htaccess

# -FrontPage-

IndexIgnore .htaccess /botstat

Options All +FollowSymlinks -Indexes

#turn on

RewriteEngine On

#remove duplicates (/index.php /www/ /www/index.php) and redirect to /

RewriteCond %{HTTP_HOST} ^www.site.ru [NC]

RewriteRule (.*) http://site.ru/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ [NC]

RewriteRule ^index\.php$ http://site.ru [R=301,L]

#<Files bots.php>

# <IfModule mod_fastcgi.c>

# <IfModule mod_rewrite.c>

#RewriteEngine On

RewriteCond %{REQUEST_FILENAME} ^(bots.php)

RewriteCond %{HTTP:Authorization} !^$

RewriteRule ^(bots)\.php$ $1.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]

# </IfModule>

# </IfModule>

#</Files>

Видишь? Свободная подпись.
dma84
На сайте с 21.04.2009
Offline
168
#1

Это вообще бред какой-то


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ [NC]
RewriteRule ^index\.php$ http://site.ru [R=301,L]

Попробуйте так


RewriteCond ^%{THE_REQUEST}$ index\.php
RewriteRule ^(.*)index\.php $1 [R=301,L]
DiAksID
На сайте с 02.08.2008
Offline
218
#2
dma84:
Это вообще бред какой-то...

упс 😂 это далеко не бред - это стандартнейшая переадресация с проверкой заголовков. уловили разницу?

и кстати, ваш редирект


RewriteCond ^%{THE_REQUEST}$ index\.php
RewriteRule ^(.*)index\.php $1 [R=301,L]

куда переадресует (и сработает ли) простейший site.ru/index.php как думаете ;) ? REQUEST_URI будет не "/index.php", а просто "index.php", так что...

show must go on !!!...
Ragnarok
На сайте с 25.06.2010
Offline
226
#3

а на самом сайте случайно не стоят ссылки на

site.ru/index.php/index.php

site.ru/index.php/1.php

?

//TODO: перестать откладывать на потом
dma84
На сайте с 21.04.2009
Offline
168
#4
DiAksID:

и кстати, ваш редирект

RewriteCond ^%{THE_REQUEST}$ index\.php
RewriteRule ^(.*)index\.php $1 [R=301,L]


куда переадресует (и сработает ли) простейший site.ru/index.php как думаете ;) ? REQUEST_URI будет не "/index.php", а просто "index.php", так что...

Этот редирект отрубает index.php во всех каталогах, так что... При чём тут REQUEST_URI ?

З.Ы.: ТСу проще посмотреть в вебмастере гугла или яши с каких страниц идут такие ссылки

wwwwww
На сайте с 29.04.2011
Offline
195
#5

Проверялось Xenu Link Sleuth. Таких ссылок нет на сайте. Вебмастер гугла и яндекса тоже ничего не показывают.

В панеле скрипта для учета индексации ПС показывается, что такие ссылки могут появиться на любой странице. То есть может открыться и index.php и contacts.php как директория, а потом уже открываются страницы:

site.ru/index.php/index.php

site.ru/index.php/contacts.php

site.ru/contacts.php/index.php

site.ru/contacts.php/contacts.php

Все мои подозрения падают только на правила авторизации:

RewriteCond %{REQUEST_FILENAME} ^(bots.php)

RewriteCond %{HTTP:Authorization} !^$

RewriteRule ^(bots)\.php$ $1.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]

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

wwwwww добавил 04.05.2011 в 09:33

dma84:
Это вообще бред какой-то


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ [NC]
RewriteRule ^index\.php$ http://site.ru [R=301,L]


Попробуйте так

RewriteCond ^%{THE_REQUEST}$ index\.php
RewriteRule ^(.*)index\.php $1 [R=301,L]

Поправьте меня, если я ошибаюсь, но что произойдет с запросом:

site.ru/vsestranicy/index.php?cat=1

Судя по вашему правилу останется:

site.ru/vsestranicy/

wwwwww добавил 04.05.2011 в 09:37

Ragnarok:
а на самом сайте случайно не стоят ссылки на
site.ru/index.php/index.php
site.ru/index.php/1.php
?

Нет, таких ссылок нет.

dma84
На сайте с 21.04.2009
Offline
168
#6
wwwwww:

Поправьте меня, если я ошибаюсь, но что произойдет с запросом:
site.ru/vsestranicy/index.php?cat=1

Судя по вашему правилу останется:
site.ru/vsestranicy/

Ошибаетесь, query_string останется

DiAksID
На сайте с 02.08.2008
Offline
218
#7
dma84:
Ошибаетесь, query_string останется

угу, зато POST данные уйдут в никуда ;)

wwwwww
На сайте с 29.04.2011
Offline
195
#8

dma84,

Ваша переадресация на моем хостинге выдает 404.

wwwwww добавил 04.05.2011 в 11:54

Сейчас в панели вебмастера гугл нашел проидексированную страницу вида:

http:// site.ru/contacts.php/

Что подтвердило данные скрипта статистики посещения ПС.

Хотя реально есть только страница http:// site.ru/contacts.php

Как избавиться от такого эффекта?

siv1987
На сайте с 02.04.2009
Offline
427
#9

RewriteRule ^index.php/?(index.php)?$ / [R=301,L]

RewriteRule ^index.php/(.+)$ /$1 [R=301,L]

RewriteRule ^(.+\.php)/ /$1 [R=301,L] #over file.php/

вставить после

RewriteRule ^index\.php$ http://site.ru [R=301,L]

wwwwww
На сайте с 29.04.2011
Offline
195
#10

siv1987, спасибо вам огромное. Ручками проверил, все работает. Осталось дождаться индексации.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий