Доступ к папке, не имеющей отношения к друпалу
Прислано: Stutzer
чт, 12/04/2007 - 19:16
Господа, друпальцы )
Возник такой вопрос:
Установил себе drupal, сижу разбираюсь.
Но пока не разобрался, нужно, чтобы одна папка на FTP, не имеющая отношения к друпалу, была доступна по http как обычно. В настоящее время сервер выдает ошибку 403 — access denied. Папка находится в корне.
На сколько я понимаю, надо что-то править в файле .htaccess, но что - не знаю.
Подскажите решение, плз.
- Stutzer's blog
- Для комментирования войдите или зарегистрируйтесь
Как один из вариантов поместить папку внутри каталога, где расположен сам drupal
database
files
!REG3XP1!>includes
misc
modules
scripts
sites
sodis
themes
CATALOGОбращение к файлам в данном каталоге - стандартное для php
Кстати очень удобно тем, что для собственные файлы не перемешиваются с "системными"
- Для комментирования войдите или зарегистрируйтесь
Это дело вебсервера, поэтому папка должна быть ниже DocumentRoot, чтобы ее можно было видеть по http, .htaccess никак не поможет, если каталог вне зоны действия сервера.
Если вы можете сделать симлинк и настроить Option FollowSymLinks (возможно уже установлена!), то можно это ограничение обойти, т.е. сервер будет думать, что папка в структуре сервера, а на самом деле она где-то в стороне.
- Для комментирования войдите или зарегистрируйтесь
Есть простое решение.
Добавьте символическую ссылку на этотт каталог в DocumentRoot.
Но помните, что для VirtualHost должна быть включена дериктива Options FollowSymLinks.
Подробнее man ln
- Для комментирования войдите или зарегистрируйтесь
— «Как один из вариантов поместить папку внутри каталога»
Возможно, но проблема в том, что нельзя менять путь к этой папке, т.к. в таком случае появится много мертвых внешних ссылок. Ради чего собственно я и парюсь.
— «Это дело вебсервера, поэтому папка должна быть ниже DocumentRoot, чтобы ее можно было видеть по http, .htaccess никак не поможет, если каталог вне зоны действия сервера.»
Папка была доступна до установки Друпала. Под «лежит в корне», я имел ввиду что она (к примеру, папка zzz) доступна по адресу http://domain.name/zzz/
Дело явно в htaccess, т.к. после переименования этого файла папка становится доступной (а друпал перестает работать :))
— «Добавьте символическую ссылку на этотт каталог в DocumentRoot.
Но помните, что для VirtualHost должна быть включена дериктива Options FollowSymLinks.»
Не совсем понял :(
- Для комментирования войдите или зарегистрируйтесь
Папка была доступна до установки Друпала. Под «лежит в корне», я имел ввиду что она (к примеру, папка 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
Полный русский перевод Drupal 5.x и модулей: раз и два.
- Для комментирования войдите или зарегистрируйтесь
Нет,я за друпал я залил в корень. Без папки 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, доступ запрещен.
Это как лечить?
- Для комментирования войдите или зарегистрируйтесь





Комментарии