Как открыть файл webm с использованием .htaccess [duplicate]

Эта «ошибка» дала мне много часов работы сверхурочных! Но я начинаю видеть его потенциальное использование (но мне хотелось бы, чтобы это было во время выполнения, все еще)

Я дам вам то, что я вижу в качестве полезного примера.

def example(errors=[]):
    # statements
    # Something went wrong
    mistake = True
    if mistake:
        tryToFixIt(errors)
        # Didn't work.. let's try again
        tryToFixItAnotherway(errors)
        # This time it worked
    return errors

def tryToFixIt(err):
    err.append('Attempt to fix it')

def tryToFixItAnotherway(err):
    err.append('Attempt to fix it by another way')

def main():
    for item in range(2):
        errors = example()
    print '\n'.join(errors)

main()

печатает следующие

Attempt to fix it
Attempt to fix it by another way
Attempt to fix it
Attempt to fix it by another way
19
задан user893856 16 October 2011 в 22:52
поделиться

3 ответа

Ответ Форпассака почти прав. Это

order allow,deny
<Files ~ "\.(js|sql)$">
   allow from all
</Files>

Вам нужна директива order сверху (и вам больше ничего не нужно).

Интересно, кажется, мы не можем просто отрицайте регулярное выражение в FilesMatch, что ... странно, тем более, что "!" не вызывает ошибок сервера или чего-либо еще. Ну, duh.


и немного объяснения:

Причина заказа сообщает серверу о его ожидаемом поведении по умолчанию.

 order allow,deny

сообщает серверу сначала обрабатывать директивы «allow»: если запрос соответствует любой разрешающей директиве, он помечен как нормально. Затем действуют директивы «deny»: если запрос соответствует любым директивам deny, он отрицается (не имеет значения, разрешено ли ему на первом проходе). Если совпадений не найдено, файл отказывается.

Директива

 order deny,allow

работает обратным образом: сначала сервер обрабатывает директивы «deny»: если запрос совпадает, он помечен как отрицаемый. Затем директивы «allow» эвакуируются: если запрос соответствует директиве allow, это разрешено, даже если оно соответствует директиве deny ранее. Если запрос ничего не соответствует, файл разрешен.

В этом конкретном случае сервер сначала пытается сопоставить директивы allow: он видит, что js и sql-файлы разрешены, поэтому запрос на foo.js идет через; запрос bar.php не соответствует никаким директивам, поэтому ему отказано.

Если мы поменяем директиву на «запретить порядок, разрешить», то foo.js будет проходить (для js), а bar.php также будет проходить, поскольку он не соответствует шаблонам.


oh и еще одна вещь: директивы в секции (т. е. & lt; Files> и & lt; Directory>) всегда выкапываются после основной файл .htaccess, перезаписывая его. Вот почему решение Vorapsak не работало так, как предполагалось: основной .htaccess отклонил запрос, затем & lt; Файлы> заказ был обработан, и он разрешил запрос.

Htaccess - магия худшего типа, но есть логика.

36
ответ дан SáT 21 August 2018 в 07:00
поделиться
  • 1
    Это предотвращает загрузку в каталог? – NSaid 6 December 2013 в 17:03
  • 2
    @ user2251229 hm? Какие загрузки? Нет «загрузки», в http, есть только POST-данные в запросе, поэтому ваш вопрос не очень ясен для меня. В любом случае, если каталог должным образом запрещен (путем размещения в каталоге .htaccess, содержащего директиву deny from all), все запросы в этот каталог будут лишены, включая POST-данные, поэтому в этом смысле да, оно делает. Но к каталогу все еще можно получить доступ к серверным языкам, FTP и другим средствам. – SáT 7 December 2013 в 01:43
  • 3
    Хорошо, позвольте мне понять это. Если бы я хотел отрицать txt, я бы написал то, что вы предложили выше, и данные из поля ввода файла не будут записаны, в какой каталог всегда есть htaccess. Однако я все еще могу получить информацию из этого каталога. Правильно ли я понимаю? Спасибо за ответ – NSaid 7 December 2013 в 05:31

Вы можете изменить разрешение файла на «600», поэтому вы можете просто получить к нему доступ через свой скрипт, и он будет лишать прямого доступа.

<?php
   // Read and write for owner, nothing for everybody else
   chmod("/somedir/somefile", 0600);
?>

http://php.net /manual/en/function.chmod.php

0
ответ дан Mohamad Hamouday 21 August 2018 в 07:00
поделиться

Попробовал ли вы установить

deny from all

вне (перед) тег, а затем изменил

deny from all

на

allow from all

внутри ? Что-то вроде

deny from all
<Files ~ "\.(js|sql)$">
   order allow,deny
   allow from all
</Files>
0
ответ дан Vorapsak 21 August 2018 в 07:00
поделиться
  • 1
    теперь кажется, что все – user893856 16 October 2011 в 23:05
  • 2
    Упс, похоже, это должно быть разрешено, отрицать. Изменен в сообщении, посмотрите, работает ли это. – Vorapsak 16 October 2011 в 23:13
  • 3
    все такой же :) – user893856 16 October 2011 в 23:36
Другие вопросы по тегам:

Похожие вопросы: