Ошибка в .htaccess

12
Serg_Kotov
На сайте с 23.11.2005
Offline
113
799

Здравствуйте!

Возникла проблема с индексированием сайта, появилось множество дублей.

В индексе появилось множество файлов типа

http://www.sitename.ru/filename.php/img/abc.jpg

Я подозреваю, что это из-за некорректно настроенного .htaccess .

Привожу его тут.

Подскажите пожалуйста, как сделать чтобы при запросе НЕСУЩЕСТВУЮЩИХ файлов типа

filename.php/img/abc.jpg выдавалась 404 ошибка?


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sitename.ru
RewriteRule (.*) http://www.sitename.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.sitename.ru/ [R=301,L]
Обзоры компьютерных железок (http://www.device-review.ru/)
M
На сайте с 04.12.2013
Offline
223
#1

Есть неточности, но ничего связанного с вашей ошибкой я не заметил.

---------- Добавлено 30.05.2015 в 22:50 ----------

Что с чем хоть дублируется?

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
Serg_Kotov
На сайте с 23.11.2005
Offline
113
#2

К примеру, есть файл price.php .

В индексе появилось куча файлов price.php/img/img/top.jpg,

price.php/images/img/top.jpg

То есть по запросу имя_файла.php/сюда_пишем_что_угодно не отдается 404 ошибка.

После имени файла ставим слеш, и что угодно, открывается содержимое имя_файла.php .

Получаем дубли:

price.php/img/img/top.jpg

price.php/img/images/top.jpg

price.php/img/img/img/top.jpg

price.php/img/img/img/top1.jpg

price.php/img/img/img/toptop1.jpg

price.php/img/img/img/toptop123.jpg

- и по всем этим запросам открывается http://sitename.ru/price.php

M
На сайте с 04.12.2013
Offline
223
#3

С любым мусором открывается price.php?

Можно попробовать закрыть в .htaccess, а вообще такое обычно в движке закрывается.

Serg_Kotov
На сайте с 23.11.2005
Offline
113
#4
miketomlin:
С любым мусором открывается price.php?
Можно попробовать закрыть в .htaccess, а вообще такое обычно в движке закрывается.

Да, С любым мусором открывается price.php .

Движка нет, это обычные php-файлы...

M
На сайте с 04.12.2013
Offline
223
#5

В файлах тоже можно делать соответствующую проверку. Если этого не делать, у вас еще и дубли с разной строкой параметров (?something) могут появиться. Есть файлы, которые работают с параметрами?

Serg_Kotov
На сайте с 23.11.2005
Offline
113
#6

Да, несколько файлов берут данные из GET-запросов.

Может это где в php настройка?

Файл test.php с простым содержимым "тест" откликается и на test.php/123 , и на test.php?4545 даже с пустым .htaccess , проверил...

M
На сайте с 04.12.2013
Offline
223
#7

Если так, то вашу первоначальную проблему можно устранить отдельным правилом. Как-то так:


RewriteRule ^(.*\.php)/ /$1 [NC,R=301,L]

А для возможных дублей с разной строкой параметров написать еще одно правило, исключив файлы, которые могут принимать параметры.

Serg_Kotov
На сайте с 23.11.2005
Offline
113
#8

Да, Ваша строка помогла!

Спасибо.

А как исключить файлы, которые могут принимать параметры?

M
На сайте с 04.12.2013
Offline
223
#9

Попробую набросать комплексное решение. Отпишусь позднее.

Sly32
На сайте с 29.03.2012
Offline
303
#10

Подскажите и мне. На Локалхосте сделал домен, например site. В браузере нормально на него переходит, все работает. Нужно убрать расширение в строке. то есть что бы при наборе site/news/ переходило на страницу site/news.php,Но в браузере так и была видна строка site/news/ ???


<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
RewriteRule ^news$ news.php [L]
</IfModule>

Это не работает

12

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