Господа, друпальцы )
Возник такой вопрос:
Установил себе drupal, сижу разбираюсь.
Но пока не разобрался, нужно, чтобы одна папка на FTP, не имеющая отношения к друпалу, была доступна по http как обычно. В настоящее время сервер выдает ошибку 403 — access denied. Папка находится в корне.
На сколько я понимаю, надо что-то править в файле .htaccess, но что - не знаю.
Подскажите решение, плз.
Комментарии
Как один из вариантов поместить папку внутри каталога, где расположен сам drupal
files
includes
misc
modules
scripts
sites
sodis
themes
CATALOG
Обращение к файлам в данном каталоге - стандартное для php
Кстати очень удобно тем, что для собственные файлы не перемешиваются с "системными"
— «Как один из вариантов поместить папку внутри каталога»
Возможно, но проблема в том, что нельзя менять путь к этой папке, т.к. в таком случае появится много мертвых внешних ссылок. Ради чего собственно я и парюсь.
— «Это дело вебсервера, поэтому папка должна быть ниже DocumentRoot, чтобы ее можно было видеть по http, .htaccess никак не поможет, если каталог вне зоны действия сервера.»
Папка была доступна до установки Друпала. Под «лежит в корне», я имел ввиду что она (к примеру, папка zzz) доступна по адресу http://domain.name/zzz/
Дело явно в htaccess, т.к. после переименования этого файла папка становится доступной (а друпал перестает работать
— «Добавьте символическую ссылку на этотт каталог в DocumentRoot.
Но помните, что для VirtualHost должна быть включена дериктива Options FollowSymLinks.»
Не совсем понял
Это дело вебсервера, поэтому папка должна быть ниже DocumentRoot, чтобы ее можно было видеть по http, .htaccess никак не поможет, если каталог вне зоны действия сервера.
Если вы можете сделать симлинк и настроить Option FollowSymLinks (возможно уже установлена!), то можно это ограничение обойти, т.е. сервер будет думать, что папка в структуре сервера, а на самом деле она где-то в стороне.
Есть простое решение.
Добавьте символическую ссылку на этотт каталог в DocumentRoot.
Но помните, что для VirtualHost должна быть включена дериктива Options FollowSymLinks.
Подробнее man ln
Папка была доступна до установки Друпала. Под «лежит в корне», я имел ввиду что она (к примеру, папка zzz) доступна по адресу http://domain.name/zzz/
Ну, если у вас при этом друпал стоит в http://domain.name/drupal/, то в .htaccess друпала скорее всего есть строка RewriteBase /drupal и фактически корнем сервера является папка /drupal - просто попробуйте сделать симлинк с /zzz на, например, /drupal/zzz, если не прокатит, вот тогда и стоит разбираться с FollowSymLinks, т.к. опция Options +FollowSymLinks стоит в друпаловском .htaccess по умолчанию.
А для понимания стоит почитать доки по *nix команде ln и вебсерверу Apache (или какой у вас стоит на хостинге)...
«Ну, если у вас при этом друпал стоит в http://domain.name/drupal/, то в .htaccess друпала скорее всего есть строка RewriteBase /drupal и фактически корнем сервера является папка /drupal»
Нет,я за друпал я залил в корень. Без папки drupal.
А в htaccess есть строчка Rewrite base /drupal
Может я не правильно его установил?
Т.е. FollowSymLinks должна помочь? Ок, буду разбираться.
Не смотрел, но по названию это, похоже, может быть полезным для вашей задачи "Configuring .htaccess to ignore specific subfolders | drupal.org"- http://drupal.org/node/30334
у меня такая же ситуация. По ссылке посмотрел вроде должно подходить, крутил и так и сяк, но все равно доступ к папке закрыт.
Нет,я за друпал я залил в корень. Без папки drupal.
А в htaccess есть строчка Rewrite base /drupal
Если строчка Rewrite base /drupal не имеет в начале значка #, то лучше его поставить
или переписать как:
Rewrite base /
И посмотрите в вашу папочку zzz, может там тоже .htaccess спрятался(?!) и не дает ее смотреть (как папку files в друпале)
Права доступа к папке?
ок ща гляну.
ну и еще в тужу кучу, если скачивать через друпал то дает скачать только в приватном режиме а в публичном (http) не дает скачать. Это тоже с этим связано?
Уважаемые коллеги! Ну как, удалось решить проблему? Напишите, пожалуйста, как именно.
А то я попробовал из материала по ссылке vadbars'a в htaccess вставить это:
RewriteCond %{REQUEST_URI} "/folder1/" [OR]
RewriteCond %{REQUEST_URI} "/folder2/"
RewriteRule (.*) $1 [L]
(ессно заменил директории на свои), но ничего не получилось - как был запрет на эти директории, так и остался
Помогите, пожалуйста! Спасибо за ответы.
Так, вроде сам разобрался.
В общем, проблема оказалась в .htaccess в строке
# Set the default handler.
DirectoryIndex index.php
Эта директива назначает указанный файл (или список файлов через запятую) загрузочным в каталоге, в котором лежит этот .htaccess, и во всех вложенных каталогах (сделано для нормальной работы CMS, загружающейся с index.php на хостингах, где этот файл не прописан в DirectoryIndex). Поэтому: если в дополнительном каталоге, например, /forum, этот самый форум загружается с файла НЕ index.php , как назначено в директиве, а с другого файла, то мы получим ошибку 403.
Как красиво выйти из положения?
1 вариант - самый простой и самый надёжный. Работает на большинстве хостеров.
Надо просто закомментировать ( знаком # ) директиву DirectoryIndex в .htaccess . И всё заработает!
Если после этого Drupal перестанет запускаться, то это означает, что на хоcтере в директиве DirectoryIndex не указан index.php . Тогда используем
2 вариант - компромиссный.
Надо раскомментировать обратно директиву DirectoryIndex в .htaccess .
После надо добавить в .htaccess в Ваших дополнительных директориях директивы DirectoryIndex с параметром, например, index.html , portal.php или другим в зависимости от того, с какого файла запускается CMS в Вашей директории (может быть, придётся сначала создать файлы .htaccess в Ваших директориях, где их нет). И всё заработает!
Удачи!
PS: 1-й вариант точно работает на Русониксе и Лидерхосте, 2-й, видимо, придётся использовать на Славхосте.
Если кому еще нужно, есть более простой вариант, чтобы были доступны другие папки. Надо просто в каждую НЕ друпаловкую папку положить файл htaccess. Подробнее здесь: http://drupal.ru/node/12377
А вот как быть в такком случае.
Друпал 6.1 в корне сайта,
Имеется каталог допустим test, тоже в корне.
Имеется htaccess в этой папке
Order Deny,Allow
Deny from all
Allow from 22.22.22.22
Заходим с этого IP - 403, доступ запрещен.
Это как лечить?
Вопрос по прежнему актуальный. Я так и не смог победить.
Нужно открыть доступ к папке http://www.мойсайт.com/raznoe/ что бы содержимое при обращении к ней выводилось просто как список файлов.
в .htaccess внутри этой папки прописано:
Satisfy any
order allow,deny
allow from all
пробовал и так:
Order Deny,Allow
Deny from all
Чесно говоря я не сильно разбираюсь в программировании и преимущественно свои сайты делаю на WP и там у меня нет проблем с открытием доступа к папке, а тут никак победить не могу. Мне нужен свободный доступ к папкам с картинками и файлами для скачивания.
Прошу доступным языком объяснить. Наверняка проблема давно решена, но из всей этой ветки я мало что понял.
Стоит версия 6.22
Видимо проблема так и осталась актуальна.
Пока актуальна только проблема, что у нас уже не самая читающая страна