- Тема: Не работает .htaccess во вложенных папках
- Не работает .htaccess во вложенных папках
- Все про файл .htaccess
- Все про файл .htaccess
- Инструкции файла .htaccess
- Почему только что созданный файл .htaccess не отображается в списке файлов?
- Почему файл .htaccess, размещенный в корне сайта, не работает во вложенных директориях?
- Почему поддомен показывает ошибку?
- Почему при открытии директории сайта в браузере показывается 403 Forbidden?
- Установка индексного файла для сайта
- Как включить отображение ошибок PHP?
- Как изменить максимальный размер загружаемых файлов в PHP?
- Как указать интерпретатору PHP необходимость обрабатывать не только файлы .php?
- Как изменить время хранения сессий PHP
- Как включить SSI
- Как настроить выполнение скриптов CGI?
- Как изменить ограничение на использование оперативной памяти в PHP?
- Как сделать так, чтобы сайт всегда открывался по основному имени?
- Какие еще настройки PHP можно задавать в .htaccess?
- Почему авторизация через .htaccess не работает в некоторых папках?
- Всё про файл .htaccess
Тема: Не работает .htaccess во вложенных папках
Опции темы
Поиск по теме
Не работает .htaccess во вложенных папках
Cent OS + ISPManeger
Друзья, у меня такая вот проблема, не работает файл htaccess во вложенных папках, в корне работает, httpd.conf вложил
В чем может быть беда? Как решить эту проблему?
AllowOverride ALL стоит в httpd.conf
В логах ошибок вебсайта есть при этом что-нибудь? Или как неработа проявляется?
Во вложенной папке прописываю файл хтаксесс:
Соответственно если прописать прямой путь к файлу mp3 то файл скачивается, не отрабатывает Deny from all
Что самое интересное, в другой папке, где находятся конфигурационные файлы CMS и находится файл хтаксесс с Deny from all файл отрабатывает:
Последний раз редактировалось godzeus; 09.04.2011 в 18:13 .
У вас на сервере стоит Nginx который не обрабатывает .htaccess и данный файл отдается через Nginx напрямую
Чтобы Nginx не отдавал его можно поправить внутри описания server в его конфиге в строке location
* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|av i|zip|gz|bz2?|rar)$ < — убрать из нее mp3
Смотрите также NgStaticRegexp
Источник
Все про файл .htaccess
Все про файл .htaccess
Инструкции файла .htaccess
Файл .htaccess позволяет изменять многие настройки вашего сайта — как настройки веб-сервера Apache, так и опции PHP. Директивы, указанные в файле .htaccess, распространяются на ту директорию, в которой он находится, а также на все вложенные директории (за одним исключением, которое будет рассмотрено ниже), в том числе и на поддомены (поскольку директории поддоменов являются поддиректориями основного сайта).Как правило, файл .htaccess создается в корневой директории сайта и иногда в директориях, которые требуют специфического поведения веб-сервера (запрет отображение списка файлов, включение SSI, авторизация и прочее).
Вы можете самостоятельно создавать файл .htaccess с помощью FTP-клиента и работать с ним как с любыми другими файлами Вашего сайта.
Почему только что созданный файл .htaccess не отображается в списке файлов?
Некоторые FTP-клиенты считают файлы, начинающиеся с точки, скрытыми и не отображают их по умолчанию. В таких случаях для того, чтобы видеть файл .htaccess, необходимо в настройках FTP-клиента включить настройку «Отображать скрытые файлы».
Почему файл .htaccess, размещенный в корне сайта, не работает во вложенных директориях?
Это связано с оптимизацией обработки статических файлов.
Сайты обычно содержат большое количество статических файлов. Это файлы, которые не требуют запуска скриптов для их отображения: картинки, музыка, видео, css, javascript, простые html-страницы. Для ускорения работы сайтов они обрабатываются, минуя основной веб-сервер и без анализа файлов .htaccess.
Иногда возникает необходимость запретить в конкретной директории оптимизацию обработки статических файлов. Например, если это картинки, на которые нужно накладывать водяной знак, перенаправляя запросы к ним на специальный скрипт.
Чтобы файлы в какой-либо директории всегда обрабатывались без оптимизации, необходимо в этой директории создать файл .htaccess. Этот файл может не содержать никаких директив, достаточно лишь его существования.
Важно не забывать, что отключение оптимизации может повлиять на скорость работы Вашего сайта и использование ресурсов тарифного плана.
Почему поддомен показывает ошибку?
Для поддомена наследуются настройки .htaccess домена. Если в настройках .htaccess домена используются правила mod_rewrite, они могут приводить к некорректной работе поддомена. Чтобы правила mod_rewrite домена не действовали на поддомен, необходимо добавить в файл .htaccess поддомена следующую строчку:
По этой же причине не рекомендуется устанавливать приложения (Joomla, WordPress и т. п.) одновременно на сайт и на его поддомены. Это может привести к некорректной работе приложения, размещенного на поддомене.
Почему при открытии директории сайта в браузере показывается 403 Forbidden?
При открытии директории без указания конкретного файла веб-сервер ищет файлы index.htm, index.html, index.php для отображения (индексные файлы). Если индексные файлы отсутствуют, сервер возвращает ошибку 403 Forbidden, так как отображение списка файлов в директории по умолчанию запрещено.
Чтобы ошибка 403 Forbidden не отображалась, либо создайте в директории индексный файл, либо добавьте в файле .htaccess опцию:
Установка индексного файла для сайта
По умолчанию индексным файлом вашего сайта веб-сервер считает файл (в порядке приоритета): index.html, index.php.
Чтобы установить в качестве индексного файла произвольный файл, следует добавить инструкцию:
Например, следующая инструкция предписывает веб-серверу при обращении к сайту открывать в качестве индексной страницы скрипт на языке Perl, размещенный в директории cgi-bin вашего сайта:
Как включить отображение ошибок PHP?
Для отображения ошибок PHP добавьте в файл .htaccess директиву:
Как изменить максимальный размер загружаемых файлов в PHP?
Максимальный размер загружаемых файлов указывается в .htaccess с помощью двух директив:
Вместо 20M укажите желаемый размер ограничения. Значение этих параметров не может быть больше 50M. Обратите внимание, что символ «M» (латинская M) указывается слитно со значением.
Как указать интерпретатору PHP необходимость обрабатывать не только файлы .php?
Чтобы заставить интерпретатор PHP обрабатывать файлы с произвольным расширением, нужно добавить соответствующую инструкцию в файл .htaccess, расположенный в корневой директории вашего сайта. Например, следующая инструкция укажет интерпретатору PHP на необходимость обрабатывать файлы с расширением .phtml:
Как изменить время хранения сессий PHP
Изменение времени хранения сессий может потребоваться, например, если вы хотите, чтобы данные об авторизации пользователей на вашем сайте сохранялись дольше. По умолчанию время хранения сессий — 1440 секунд (24 минуты), cookie с идентификатором сессии — до закрытия браузера пользователем.
Для изменения времени хранения сессий PHP необходимо внести несколько изменений в .htaccess. Так как конкретные настройки могут зависеть от особенностей работы вашего сайта с посетителями, рекомендуем перед внесением изменений проконсультироваться с профессиональным разработчиком. Возможно, непосредственно для вашего сайта более эффективным окажется альтернативный механизм хранения данных, привязанных к посетителю (например, только через cookie), либо альтернативный механизм хранения сессий PHP (установленный с помощью session_set_save_handler()).
Для изменения времени хранения сессий добавьте в .htaccess следующие директивы:
Обратите внимание: если сессия открывается для каждого неавторизованного пользователя, при большом количестве посетителей и длительном времени сохранения сессий образуется большое количество файлов в папке, указанной в session.save_path. Это может вызывать замедления сайта в момент запуска механизма очистки старых сессий и увеличивать количество ресурсов, необходимых для работы сайта. В случае работы с большим количеством сессий мы рекомендуем использовать альтернативные механизмы их хранения и очистки, например:
- Указывать вложенность директорий хранения сессий с помощью аргумента N в session.save_path. Очищать старые сессии при этом необходимо собственными скриптами. Более подробная информация об этом методе находится в описании session.save_path в документации PHP.
- Реализовать собственный механизм хранения сессий (например, в MySQL) и установить его с помощью session_set_save_handler().
Как включить SSI
Директивы SSI (Server Side Includes) по умолчанию обрабатываются в файлах с расширением .shtml (например, index.shtml). Чтобы SSI обрабатывались и в других файлах, необходимо в файле .htaccess указать следующие директивы:
Вместо «.ssi .html» укажите расширения файлов, в которых должны обрабатываться директивы SSI.
Обратите внимание: мы не рекомендуем использовать в одном и том же файле PHP и SSI одновременно.
Как настроить выполнение скриптов CGI?
Для выполнения скриптов CGI в какой-либо папке необходимо настроить веб-сервер соответствующим образом с помощью файла .htaccess.
- В папке, в которой должны выполняться скрипты CGI, создайте файл .htaccess вида: Options +ExecCGI
AddHandler cgi-script .cgi .pl Вместо «.cgi .pl» укажите список расширений, которые должны обрабатываться как скрипты. - Загрузите скрипты в папку.
- С помощью Вашего файлового менеджера установите файлам скриптов права на выполнение (755).
Как изменить ограничение на использование оперативной памяти в PHP?
Для изменения ограничения на оперативную память используйте следующую директиву в .htaccess:
Вместо 128M укажите желаемый размер ограничения. Обратите внимание, что символ «M» (латинская M) указывается слитно со значением.
Как сделать так, чтобы сайт всегда открывался по основному имени?
Если у вашего сайта несколько имен, но вы хотите, чтобы пользователи всегда видели в адресной строке основное имя сайта, добавьте в файл .htaccess в корне вашего сайта следующие строки:
Замените example.com на основное имя вашего сайта. Теперь при обращении к сайту пользователи будут автоматически перенаправлены на его основное имя.
Какие еще настройки PHP можно задавать в .htaccess?
В документации на сайте разработчика указан полный список директив PHP. В файле .htaccess можно изменять директивы, значение графы Changeable для которых соответствует PHP_INI_PERDIR или PHP_INI_ALL.
Источник
Почему авторизация через .htaccess не работает в некоторых папках?
Есть сервер на дебиане, на котором крутится Apache 2.2.22.
Внезапно выяснил что не работает AuthType Basic в некоторых поддиректориях:
.htaccess в /home/www/cgi-bin :
И логин\пароль запрашиваются.
В папке /home/www/cgi-bin/skd тоже (там есть файл index.pl)
НО в папке /home/www/cgi-bin/skd/api уже 403 ошибка и нет запроса пароля!
И скрипт server.domain.ru/cgi-bin/skd/api/test.pl доступн без всякой авторизации!
Настроено 2 поддомена: weather.domain.tld и server.domain.tld.
В /etc/apache2/sites-avaible/default:
В чем может быть причина?
- Вопрос задан более трёх лет назад
- 1774 просмотра
1. нет, нет
2. если положить такой:
AuthType Basic
AuthName «Please login, this area is only for me!»
AuthUserFile /var/www/server.domain.ru/invent/.htpasswd
require valid-user
то в /cgi-bin/skd выдаст запрос на логин\пароль «Please login, this area is only for me!»
в /cgi-bin/skd/api 403 ошибка без авторизации
скрипт /cgi-bin/skd/api/test.pl — доступен без авторизации
3. SetEnvIf — чтобы все содержимое папки /cgi-bin/p (/home/www/cgi-bin/p) было доступно без авторизации:
SetEnvIf Request_URI «p/*.*» REDIRECT_noauth=1
Источник
Всё про файл .htaccess
Файл .htaccess позволяет администратору управлять почти всеми настройками сервера Apache, касательно всего сайта или только определённых директорий, потому как структура папок на сервере имеет древовидную структуру и если поместить файл .htaccess в одну из них, то можно получить управление именно этой директорией, не влияя на работу других. Если в директории «DIR» расположен такой файл .htaccess, а во вложенном каталоге по отношению к нему есть еще один .htaccess, то во вложенной директории действуют настройки последнего. Вот таким образом, новый .htaccess отменяет предыдущий.
Данный фал вы не увидите через протоков http, следоватьно пользователи не смогут увидеь всех настроек вашего сайта.
Сервер Apache действует таким образом: при начале обработки страницы, он сначала ищет именно файл .htaccess, находящийся в коре директорий. Если он найден, то Apache начинает обработку директории соответствующим образом, описанным в файле.
Если сервер при обходе директорий, находит синтаксические ошибки в файле .htaccess, то он прекращает обработка. Вот некоторые из них, а точнее: самые популярные ошибки при работе с этим файлом:
1. Путь к файлу должен быть полным. ( /paht/to/Your/site/.htpassword )
2. Для переадресаций указываем протокол: http или ftp (Redirect / http://www.somesite.ru/)
3. По умолчанию файл называется .htaccess.
4. Файл сохраняется в Unix формате. То есть символ новой строки — n.
Теперь стоит поговорить о некоторых самых популярных параметрах настойки:
Запреты и разрешения
Запрет на все файлы в каталоге:
Доступ только с определенного IP:
Запретить доступ для определенного ip:
Запрет доступа на группу файлов по расширению (по маске):
Разрешение или запрет на чтение по расширению.
Запрет на доступ к файлам *.inc:
Стоит отметить, что запреты файла .htaccess будут действовать только при обращении к нужному документу через браузер пользователя.
Запрет доступа на конкретный файл:
Запрет на чтение conf.inc.php посетителями сайта не запрещает локальным приложениям сервера читать этот файл.
Такое значение AuthName для посетителей будет выводиться во всплывающем окне. Значение AuthUserFile указывает серверу, где хранится файл с паролями для доступа. такой файл можно создать специальной утилитой htpasswd в операционной системе linux или htpasswd.exe в ОС Windows.
Пароль только на 1 файл:
Пример установки пароля на файл file.rar:
Пароль на группу файлов по расширению:
Перенаправление при запросе определенных каталогов и страниц:
Переопределение стартовой страницы
Обработка ошибок сервера
код 401 — Требуется авторизация (Authorization Required)
код 403 — Нет доступа (Forbidden)
код 404 — Не найден файл (File not found)
код 500 — Внутренняя ошибка сервера (Internal Server Error)
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
Выставить полный запрет на просмотр оглавления необходимой директории. То есть, если в каталоге dir/ нет файла Index.*, что бы он загружался автоматически, то при обращении пользователя к dir/, ему будет отказано в доступе и Apache выдаст ошибку 403.
Иногда необходимо установить кодировку по умолчанию, то есть default-кодировка. В какой кодировке сервер будет отдавать документы.
А так же установка необходимой кодировки на файлы на сервере:
Источник