PDA

Просмотр полной версии : вопрос по хтаццесс


Дикс
04.03.2008, 12:36
ЗДРАСЪТЕ!!!11

Есть зогадка.

в корневой папке лежит хтацесс с текстом:

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

а во вложенной папке - видеофайлы.
Если просто их скачивать - скачиваются.
Если сунуть туда хтаццесс

AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/mysite/.htpasswd
AuthGroupFile /dev/null
<Files myvideo.mp4>
require valid-user
</Files>

и соответствующий .htpasswd

- йа попадаю на страничко сайта с надписью Page Not Found - действует хтаццесс из корневой директории.

Внеманее знотокам!
Зогадка.

Как избавиться от действия корневого хтацесса во вложенной директории?
* посредством добавления директив в хтацесс этой вложенной директории

Helios
04.03.2008, 20:33
RewriteEngine Off

blackybr
04.03.2008, 20:58
Эм.. не особо тебя понял, но если нам не изменяет память (и жена :d ) то "главный" как раз корневой хтакцес и то что предложил гелиос не сработает, так как корневой уже "задал правила"

Зы проверено на редиректах

в корне лежит редирект на папку /admin/

в корне админ лежит рерайт енж офф..

someshit.net/admin/

Helios
05.03.2008, 00:55
Здесь другая ситуация

Когда апач получает запрос, он начинает его раскручивать в обратном направлении и вложенный в папку .htaccess будет иметь приорите больший, чем корневой.

Проверено на apache 2.0.59

Дикс
05.03.2008, 11:17
спасибо, попробую

Дикс
06.03.2008, 12:52
блиин

вот смотрите:

/
htaccess:

<IfModule mod_expires.c>
ExpiresByType text/html A1
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine on

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

AuthUserFile "/home/mededapp/.htpasswds/public_html/passwd"


/files/
htaccess:

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks


/files/podcasts/
htaccess:
RewriteEngine off
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/mededapp/public_html/files/videos/podcast/.htpasswd
AuthGroupFile /dev/null


в результате при обращении к любому видео нетребующему http-авторизацию, из папки /files/podcasts/ меня выкидывает на главную страницу сайта.
если требовать авторизацию - кидает на страницу сайта PageNotFound

Что тут поделать?

Дикс
06.03.2008, 14:48
видимо тут надо поправить вот это выражение
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
т.е. исключить из него файлы, лежащие в папке /files/podcasts/
Для этого думаю достаточно исключить слово подкаст.

Исключить набор букв легко, но исключить слово сложнее.
Накопал вот это:

One easy way to exclude text from a match is negative lookbehind:
\w+\b(?<!\bfox)


отсюда http://www.codinghorror.com/blog/archives/000425.html

но не понимаю как это правильно применить =\

вот так не работает:
RewriteRule ^\w+\b(?<!\bfox)$ index.php?q=$1 [L,QSA]

вообще символы \w и \b относятся к любым регуляркам - к js и php и в апач?
или везде регулярки различаются?