[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: htaccess и forbidden
3371
Здравствуйте. Второй день бьюсь над проблемой.

если в адресной строке, например, domain.ru/var1/var2/var3/... имя var1 содержит символы < или > или " или | или : или пробел, то вылезает forbidden и его никак не контроллирую. Причем происходит это только в том случае если предыдущее имя является реальным каталогом, а не виртуальным.

мой htaccess
RewriteEngine on 
Options +FollowSymlinks

#Отлавливаю в URI двойную кавычку
RewriteCond %{REQUEST_URI} \"
RewriteRule .* /error.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule .* index.php [L]


на примерах:
В адресной строке domain.ru/var1/var2/var3/
1) domain.ru - всегда реальный. Остальные каталоги виртуальные, поэтому если написать domain.ru/va"r1/var2/var3/ - то вылетит forbidden. Если написать domain.ru/var1/va"r2/var3/ - то вылетит мой error.php, в котором я делаю что хочу. Далее кавычка обрабатывается нормально.

2) domain.ru - всегда реальный и например пусть var1 тоже реальный, тогда domain.ru/va"r1/var2/var3/ - то вылетит forbidden. domain.ru/var1/va"r2/var3/ - то вылетит forbidden. domain.ru/var1/var2/va"r3/ - то вылетит мой error.php. Далее кавычка обрабатывается нормально.

Возможно у меня в настройках апача где-то косяк, но где ума не приложу. Выручайте.

PS Вместо двойной кавычки можно подставить символ < или > или | или : или пробел проблема для них такая же.



Спустя 5 часов, 25 минут, 54 секунды (5.04.2011 - 23:14) VELIK505 написал(а):
Судя по всему у вас 404 ая не настроена правильно.
Если конечно var1 var2 var3 не существует.
404ую как отдаёшь?

Спустя 19 часов, 28 минут, 41 секунда (6.04.2011 - 18:43) 3371 написал(а):
VELIK505 спасибо что откликнулись.
Немного не понял вопрос про где отдаешь 404.

Вообщем 404 должен выплевывать грубо говоря индекс.пхп, который получает и обрабатывает REQUEST_URI. Но дело в том, что когда проблемные символы появляются в имя_2 адреса <имя1_реальный каталог>/<имя_2 виртуальный>/ то дело даже до индекса не доходит, а сразу вылетает форбиден.

htaccess тоже не ловит такие символы.

А где надо производить настройку 404?

Спустя 22 минуты, 48 секунд (6.04.2011 - 19:05) 3371 написал(а):
Еще момент. Если RewriteRule все закомментировать и использовать ErrorDocument 404 /error.php то реакция аналогична. Когда когда в адресе несуществующий каталог, то вылетает error.php, если проблемный символ в следующем за реальным каталогом, то форбидден.

Спустя 7 минут, 30 секунд (6.04.2011 - 19:13) VELIK505 написал(а):
У тебя свич обработка? Дай ссылку на сайт посмотреть

Спустя 4 минуты, 18 секунд (6.04.2011 - 19:17) 3371 написал(а):
Да нет. Я даже обработку не дописал, потому что данные не доходят до индекса, а форбиден вылетает.
На локалхосте тестирую.

Спустя 6 минут, 32 секунды (6.04.2011 - 19:24) Игорь_Vasinsky написал(а):
может регулярки не правильно сопоставляет реальный URL и ЧПУ? от этого и 404

Спустя 16 минут, 36 секунд (6.04.2011 - 19:40) 3371 написал(а):
нее. вы не правильно мою проблему поняли.

тут все каталоги виртуальные за исключением естественно корневого
http://test.ru/cla%22s/asd/asd вылетает forbidden
http://test.ru/clas/as%22d/asd вылетает сообщение из моего error.php (htaccess в первом посте)
http://test.ru/clas/asd/as%22d вылетает сообщение из моего error.php

тут все каталоги виртуальные за исключением естественно корневого и class
http://test.ru/class/a%22sd/asd вылетает forbidden
http://test.ru/class/asd/as%22d вылетает сообщение из моего error.php

улавливаете закономерность?

Спустя 6 минут, 42 секунды (6.04.2011 - 19:47) Игорь_Vasinsky написал(а):
да вижу. тока откуда пробелы...

если пробел в имени виртуального каталога в ральном - то 403
если название с пробелом в виртуальн. каталога,который в виртуальном - 404

для справки

Ошибка 403 (Forbidden, доступ запрещен)

может возникнуть по одной из нескольких причин:

Вы выложили на сервер неправильный индексный файл. Файл главной страницы вашего сайта должен называться index.shtml, index.html, index.htm, index.phtml или index.php. Обратите внимание: все символы должны быть в нижнем регистре (В отличие от Windows, в ОС Linux, под управлением которой работает сервер, регистр имен файлов имеет значение, и файлы index.html и Index.html — это два абсолютно разных файла).

Вы выставили неправильные права на папку, в которой находится запрашиваемый файл, или на какую-либо из ее родительских директорий. Все эти директории должны предоставлять права на выполнение (x) для владельца.

Вы загрузили файлы сайта в неправильную папку. Войдите в свою контрольную панель в раздел «Домены / Мои домены» и посмотрите, что написано в столбце «Папка» напротив интересующего вас домена. Именно в эту папку и нужно загружать файлы сайта.

Если вы считаете, что все правила, приведенные выше, соблюдены, но ошибка 403 все равно возникает, обратитесь в техподдержку.


Спустя 2 минуты, 10 секунд (6.04.2011 - 19:49) Игорь_Vasinsky написал(а):
с какого то хостинга справочка...

Спустя 24 минуты, 50 секунд (6.04.2011 - 20:14) 3371 написал(а):
Вообщем сейчас на хостинге потестировал. На нем все нормально, а вот у меня на локалхосте эта проблема никуда не делась.
Поэтому скорее всего надо апач смотреть, а что именно не знаю.

Спустя 22 часа, 58 минут, 22 секунды (7.04.2011 - 19:12) VELIK505 написал(а):
Вот именно поэтому и надо Локалку (денвер) вынести в отдельную рубрику! Создать отдельную рубрику!
Сервак это одно а локалка это другое!

Спустя 20 минут, 11 секунд (7.04.2011 - 19:33) 3371 написал(а):
У меня не денвер.
Сейчас на багзилле нашел описание похоже как раз моей проблеммы.
https://issues.apache.org/bugzilla/show_bug.cgi?id=41441
Обратите внимание на последние несколько постов. Случай 1 в 1.

Правда в английском не сильно силен поэтому решение проблемы пока не нашел.

Кстати вывел на эту ссылку анализ лога ошибок. А именно вот эта ошибка: (20024)The given path is misformatted or contained invalid characters: Cannot map GET /sdf%22sdf/sdf HTTP/1.1 to file

%22 - это " (двойная кавычка).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.