Дата последнего изменения: 18.11.2020
Файл .htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах, если только эти директивы не переопределены директивами нижележащих файлов .htaccess.
Чтобы файлы .htaccess можно было использовать в настройках главного конфигурационного файла httpd.conf значение директивы AllowOverride должно быть установлено как All.
Пути к файлам и каталогам должны указываться от корня сервера.
При внесении изменений в файл .htaccess нет необходимости перезапускать сервер. Файл .htaccess проверяется при каждом обращении к серверу, так что изменения вступают в силу сразу после их внесения. Так как файл является служебным, он не доступен пользователям из веб-браузера.
В демонстрационном сайте файл .htaccess по умолчанию содержит следующие директивы:
Options -Indexes ErrorDocument 404 /404.php <IfModule mod_php5.c> php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 </IfModule> <IfModule mod_php7.c> php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 </IfModule> <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] </IfModule> <IfModule mod_dir.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_expires.c> ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day" ExpiresByType image/png "access plus 3 day" ExpiresByType text/css "access plus 3 day" ExpiresByType application/javascript "access plus 3 day" </IfModule>
Для остальных PHP директив, не обозначенных знаком комментария (#), добавлена проверка на наличие необходимых модулей Apache в системе. Выполнение данных директив не приведет к возникновению ошибки в системе.
php_flag session.use_trans_sid off
производит отключение подстановки идентификатора сессии в ссылке на сайте. php_value display_errors 1
, указывает на то, что включено разрешение на вывод сообщений о возникновении ошибок. Директива php_value error_reporting
определяет уровень ошибок, при возникновении которых будет выводиться сообщение. С помощью указанных директив можно настроить режим вывода интерпретатором PHP сообщений об ошибках. IfModule mod_rewrite.c
- это настройка правил для mod_rewrite
.ExpiresActive on
включает кеширование изображений, позволяющее ускорить их загрузку при повторном обращении к страницам сайта. ExpiresByType image/jpeg "access plus 3 day"
, ExpiresByType image/gif "access plus 3 day"
, ExpiresByType image/png "access plus 3 day"
, ExpiresByType text/css "access plus 3 day"
, ExpiresByType application/javascript "access plus 3 day"
в свою очередь, определяют формат изображений, стилей, скриптов и срок, на который будет произведено кеширование. По умолчанию, выполняется кеширование файлов формата .jpeg, .gif, .png, css и .js сроком на 3 дня. В некоторых случаях может не работать авторизация при обмене данными с 1С. Часто проблема возникает в результате работы php в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в php. Можно это проверить, посмотрев phpinfo() в разделе Server API: CGI
.
Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Для этого выполните следующие действия:
RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
bitrix/admin/.htaccess
, которые отключают mod_rewrite:
#<ifmodule mod_rewrite.c=""> # RewriteEngine Off #</ifmodule>
bitrix/php_interface/dbconn.php
добавьте строки:
$remote_user = $_SERVER["REMOTE_USER"] ? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом.