Меню

настройка htaccess для drupal

Стандартный .htaccess для Drupal

Оригинальный файл .htaccess для Drupal будет полезен в том случае, если вы его случайно удалили или некорректно отредактировали.

О Drupal

«Посредством системы Drupal можно строить сайты и вебприложения различного назначения и сложности. Интерфейс пользователя позволяет управлять сайтами на Drupal без знаний HTML, вебвёрстки и языков программирования».
— drupal.org

Исходный код

Содержимое стандартного файла .htaccess для CMS Drupal 7.

# Protect files and directories from prying eyes.

Order allow,deny

# Don’t show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See
# sites/default/default.settings.php and drupal_environment_initialize() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.

php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
php_flag session.auto_start off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation off

# Requires mod_expires to be enabled.

# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause
# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off

# Various rewrite rules.

RewriteEngine on

# Block access to «hidden» directories whose names begin with a period. This
# includes directories used by version control systems such as Subversion or
# Git to store control files. Files whose names begin with a period, as well
# as the control files used by CVS, are protected by the FilesMatch directive
# above.
#
# NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
# not possible to block access to entire directories from .htaccess, because
# is not allowed here.
#
# If you do not have mod_rewrite installed, you should remove these
# directories from your webroot or otherwise protect them from being
# downloaded.
RewriteRule «(^|/)\.» — [F]

# If your site can be accessed both with and without the ‘www.’ prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the ‘www.’ prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the ‘www.’ prefix,
# (http://example.com/. will be redirected to http://www.example.com/. )
# uncomment the following:
# RewriteCond % !^www\. [NC]
# RewriteRule ^ http://www.%% [L,R=301]
#
# To redirect all users to access the site WITHOUT the ‘www.’ prefix,
# (http://www.example.com/. will be redirected to http://example.com/. )
# uncomment the following:
# RewriteCond % ^www\.(.+)$ [NC]
# RewriteRule ^ http://%1% [L,R=301]

Читайте также:  настройка proto rail 2011

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond % !-f
RewriteCond % !-d
RewriteCond % !=/favicon.ico
RewriteRule ^ index.php [L]

# Rules to correctly serve gzip compressed CSS and JS files.
# Requires both mod_rewrite and mod_headers to be enabled.

# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond % gzip
RewriteCond %\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

# Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond % gzip
RewriteCond %\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ — [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ — [T=text/javascript,E=no-gzip:1]

# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding

Содержимое стандартного файла .htaccess для CMS Drupal 6.

# Protect files and directories from prying eyes.

Order allow,deny

# Don’t show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Force simple error message for requests for non-existent favicon.ico.

# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 «The requested file favicon.ico was not found.

# Set the default handler.
DirectoryIndex index.php

# Override PHP settings. More in sites/default/settings.php
# but the following cannot be changed at runtime.

# PHP 4, Apache 1.

php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0

# PHP 4, Apache 2.

php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0

# PHP 5, Apache 1 and 2.

php_value magic_quotes_gpc 0
php_value register_globals 0
php_value session.auto_start 0
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.encoding_translation 0

Читайте также:  ibm storwize v3700 настройка ldap

# Requires mod_expires to be enabled.

# Enable expirations.
ExpiresActive On

# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600

# Do not allow PHP scripts to be cached unless they explicitly send cache
# headers themselves. Otherwise all scripts would have to overwrite the
# headers set by mod_expires if they want another caching behavior. This may
# fail if an error occurs early in the bootstrap process, and it may cause
# problems if a non-Drupal PHP file is installed in a subdirectory.
ExpiresActive Off

# Various rewrite rules.

RewriteEngine on

источник

Drupal Русскоязычное сообщество

Я все настраиваю безопасность сайта и дошла до модуля , который мне показал такое *PHP files in the Drupal files directory can be executed.* Зайдя в справку, там мне показало, что файл .htaccess был изменен злоумышленниками, но насколько я знаю этот файл генерируется под сайт и хостинг (может и ошибаюсь). И вот я скачала самый новый файл .htacces с версии drupal-7.64 он действительно несколько изменен и дописан.

Вопросы, на которые я не имею понятия:

!) Как опридилиты действительно ли файл htaccess был изменен злоумышленниками?

2) Если файл .htaccess изменился по мере обновлений ядра Друпала, то как корректно добавить все новые правила?

3) Безопасно ли менять файл .htaccess например я пишет вот здесь http://blogerator.org/page/fajl-primery-htaccess-redirekt-dostup
21. Защищаем сайт?

Лучший ответ

Надо запретить выполнение php, по крайней мере, в sites/*/files, а ещё лучше, оставить только нужные точки входа (/index.php, и что-то ещё по необходимости), и по возможности, это всё надо делать в конфигурации веб сервера, а не в .htaccess.

Комментарии

Можете скачать свежий друпал и посмотреть этот файл там, это даст вам ответ на 1 и 2 вопросы. По третьему вопросу: да, этот файл можно менять под свои нужды, примеры, как и зачем менять есть в самом этом файле. Главное при обновлении не затереть эти изменения.

По поводу «пхп филес мэй би экзекьютед» — тут недавно был спор на эту тему. В общем, суть в том, что по умолчанию друпал действительно позволяет выполнить по прямой ссылке любой пхп файл во внутренних директориях сайта. Именно эта возможность используется, когда при заражении сайта подкидывают левые файлы — их затем вызывают по прямой ссылке, а любители распаковать новую версию поверх старой не понимают, как их повторно взламывают. И вот суть в том, что секьюрити ревью вам всё верно говорит, лучше бы запретить исполнение таких файлов. Но это вам лучше обратиться к @bsyomov он в этом, наверное, лучше всех тут разбирается.

Читайте также:  изменение настроек bios компьютера

Тем не менее, в большинстве случаев этот момент практически все игнорируют. И в принципе это допустимо, т.к. чтобы этим воспользоваться, сперва нужно взломать сайт каким-либо другим способом.

Надо запретить выполнение php, по крайней мере, в sites/*/files, а ещё лучше, оставить только нужные точки входа (/index.php, и что-то ещё по необходимости), и по возможности, это всё надо делать в конфигурации веб сервера, а не в .htaccess.

За исключением очень редких случаев, нужно исполнять только index.php, install.php, cron.php и update.php. Вообще, если посмотреть в семёрке ядро и модули, то абсолютное большинство файлов с расширением .php — это .api.php, .tpl.php плюс классы в некоторых модулях. Все эти файлы не должны исполняться по прямой ссылке. Приблизительно такая ситуация в восьмёрке, только там значительно больше классов, а шаблоны вообще не php.

Да, я как раз об этом и писал.
При этом:
Файл install.php нужен только при установке.
Задачи выполняемые cron.php и update.php лучше запускать через drush, например, вне контекста веб сервера.
Т.е. и остаётся только одна точка входа — index.php, и возможно, что-то в модулях, например, это может быть какой-то обработчик статистики с упрощённым бутстрапом. Т.е. точки входа довольно легко контролируются.

1. [Виявити так] Посмотреть какой файл в дистрибутиве Друпала. Сравнить со своим. Изменен может быть не только файл htaccess, но и другие. Есть модуль hacked — он поможет выявить изменения.

2. Копируете htacess. Обновляете ядро. Возвращаете тот, что был. Вроде можно композер на это настроить. Делаем бекапы и спим спокойно. В самом htaccess авторами Друпала изменения редко проводятся. Если проводятся — врядли это повлияет на работу сайта.

3. Если пароль от файлов, БД и самого сайта знаете — меняйте что считаете нужным. Если еще куча народа — не поможет.

1) можно сравнить вплоть до автоматических средств типа diff
2) сравнить и перенести свои изменения
3) Часто меняется по необходимости, проблемы наступают например там где сервер не использует apache если использовать инструкции которые работают с ним.

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

Потом решила просто пересмотреть все правила и изучить их с новой версией друпал, там например заметила что правило *# Protect files and directories from prying eyes.* стало длиннее и там дописали **, и так далее

источник