вопрос по хтаццесс

Discussion in 'PHP' started by Дикс, 4 Mar 2008.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ЗДРАСЪТЕ!!!11

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

    в корневой папке лежит хтацесс с текстом:
    PHP:
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond 
    %{REQUEST_FILENAME} !-d
      RewriteRule 
    ^(.*)$ index.php?q=$[L,QSA]
    а во вложенной папке - видеофайлы.
    Если просто их скачивать - скачиваются.
    Если сунуть туда хтаццесс

    PHP:
    AuthName "Restricted Area" 
    AuthType Basic 
    AuthUserFile 
    /home/mysite/.htpasswd 
    AuthGroupFile 
    /dev/null 
    <Files myvideo.mp4>
    require 
    valid-user
    </Files>
    и соответствующий .htpasswd

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

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

    Как избавиться от действия корневого хтацесса во вложенной директории?
    * посредством добавления директив в хтацесс этой вложенной директории
     
    #1 Дикс, 4 Mar 2008
    Last edited: 4 Mar 2008
  2. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Code:
    RewriteEngine Off
     
  3. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    Эм.. не особо тебя понял, но если нам не изменяет память (и жена :d ) то "главный" как раз корневой хтакцес и то что предложил гелиос не сработает, так как корневой уже "задал правила"

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

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

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

    someshit.net/admin/
     
    #3 darky, 4 Mar 2008
    Last edited: 4 Mar 2008
  4. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Здесь другая ситуация

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

    Проверено на apache 2.0.59
     
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    спасибо, попробую
     
  6. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    блиин

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

    /
    htaccess:
    PHP:
    <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=$[L,QSA]
    </
    IfModule>

    AuthUserFile "/home/mededapp/.htpasswds/public_html/passwd"
    /files/
    htaccess:
    PHP:
    SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
    Options None
    Options 
    +FollowSymLinks
    /files/podcasts/
    htaccess:
    PHP:
    RewriteEngine off
    AuthName 
    "Restricted Area"
    AuthType Basic
    AuthUserFile 
    /home/mededapp/public_html/files/videos/podcast/.htpasswd
    AuthGroupFile 
    /dev/null
    в результате при обращении к любому видео нетребующему http-авторизацию, из папки /files/podcasts/ меня выкидывает на главную страницу сайта.
    если требовать авторизацию - кидает на страницу сайта PageNotFound

    Что тут поделать?
     
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    видимо тут надо поправить вот это выражение
    PHP:
    RewriteRule ^(.*)$ index.php?q=$[L,QSA]
    т.е. исключить из него файлы, лежащие в папке /files/podcasts/
    Для этого думаю достаточно исключить слово подкаст.

    Исключить набор букв легко, но исключить слово сложнее.
    Накопал вот это:
    PHP:
    One easy way to exclude text from a match is negative lookbehind
    \
    w+\b(?<!\bfox)
    отсюда http://www.codinghorror.com/blog/archives/000425.html

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

    вот так не работает:
    PHP:
    RewriteRule ^\w+\b(?<!\bfox)$ index.php?q=$[L,QSA]
    вообще символы \w и \b относятся к любым регуляркам - к js и php и в апач?
    или везде регулярки различаются?