не подхватываются .htaccess из поддиректорий

alpha

Новичок
не подхватываются .htaccess из поддиректорий

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

корневой .htaccess
AddType application/x-httpd-php5 .php
Options -Indexes +FollowSymlinks -MultiViews

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rewriteurl=$1 [QSA,L]
</IfModule>

Тестовый .htaccess в поддиректории i2
RewriteEngine On
RewriteRule ^(.*)$ loadingAnimation.gif [L]


на других серверах при любом обращении отдает картинку, тут все идет на index.php.

Если набирать site.com/i2/adas.sa, то попадаем на index.php, где:
QUERY_STRING => "rewriteurl=i2/adas.sa"
REDIRECT_QUERY_STRING => "rewriteurl=i2/adas.sa"
REDIRECT_STATUS => "200"
REDIRECT_URL => "/i2/adas.sa"
REQUEST_URI => "/i2/adas.sa"

-~{}~ 19.11.08 17:28:

версия apache 2.2.9
 

alpha

Новичок
не, так тут не то. если в index.php ничего не выводится, то все вложенные .htaccess отрабатывают нормально. а если будет
PHP:
<?php
echo 1;
?>
уже не отработает.

общение с хостером результата не дало, они говорят что проблемы с моей стороны, но где ж могут быть проблемы в
PHP:
<?php
echo 1;
?>
:)
 

zerkms

TDD infected
Команда форума
alpha
когда они говорили, что "проблемы с моей стороны" они мягко намекали на "проблемы в тебе".
 

zerkms

TDD infected
Команда форума
alpha
вероятно они отмахнулись от твоей проблемы. сам почитай своё бредовое изучение проблемы. твой вердикт, вкратце: в зависимости от кода пхп работает или нет .htaccess. бред сивой кобылы.
 

alpha

Новичок
нет, оказалось не от кода, вернее выполнялся php, когда не должен.
Я немного запутался с названиями папок, поэтому смотрел не тот .htaccess. Описываю как все оказалось сейчас.

.htaccess в корне:
Options -Indexes +FollowSymlinks -MultiViews

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?rewriteurl=$1 [L,QSA]

index.php
PHP:
<?php
    $fp = fopen('log.txt', 'a');
    fputs($fp, 'Таки да, index.php почему-то срабатывает. Время: ' . date("d.m.Y H:i:s") . "\n");
?>
Имеется папка i2 со следующим .thaccess:
AuthType Basic
AuthName "Restricted area"
AuthUserFile "/home/XXX/public_html/.htpasswd"
Require valid-user

набираем: http://site/i2/loadingAnimation.gif, получаем запрос на авторизацию, НО, в файл log.txt пишется текст, значит срабатывает файл index.php. Такого быть не должно.

При убирании последних 3х в корневом .htaccess обращение к index.php не производится.

Значит, видимо, где-то ошибка.


А тогда было: мы СНАЧАЛА обрашаемся к index.php, он смотрит, таки да, такой страницы у нас нету в базе, шлем 404й заголовок. Соответственно запрос на авторизацию не выводится :)
 

MiksIr

miksir@home:~$
А loadingAnimation.gif у тебя ввобще есть? Если нет, срабатывает RewriteCond %{REQUEST_FILENAME} !-f и делает реврайт.
 

alpha

Новичок
не, ну есть конечно )

-~{}~ 20.11.08 12:36:

блин, хостеры вообще ДОЛЖНЫ понимать как работает .htaccess?
ответ тп:
Дело в строке
RewriteRule ^(.*)$ index.php?rewriteurl=$1 [L,QSA]

Как я понимаю она принудительно заворачивает все обращения на этот файл.
 

alpha

Новичок
нет, 'Как я понимаю она принудительно заворачивает все обращения на этот файл.' это ответ хостера :)

но ведь оно должно работать так: смотрим корневой хтаццес, видим условие RewriteCond %{REQUEST_FILENAME} !-f, не попадаем на условие, не применяем правило. Смотрим что есть такая директория, читаем ЕЕ .htaccess, выдаем запрос на авторизацию, до index.php КОРНЕВОЙ ДИРЕКТОРИИ, мы не должны доходить вообще.

-~{}~ 20.11.08 13:22:

а может правильно отрабатывать так: попадаем в директорию, где лежит файл, получаем запрос на авторизацию, нельзя определить есть файл там или нету, т.к. мы еще не авторизированы, получаем что файла 'пока' нету, работает index.php?

-~{}~ 20.11.08 13:58:

все решилось тем, таки создали создали лог перенаправлений, и оказалось что мне так же пытались вернуть 401.shtml. т.к. его на сайте не было, то срабатывали правило и выдавало index.php.
Всем спасибо.
 
Сверху