Алексей Шафранский, Добрый день.
В BitrixVM 9.0.4 не работают некоторые редиректы htaccess с включенным композитом ни на одном из проектов, где был включен автокомпозит, а потом в меню VM был сделан Configure nginx to use composite cache.
В основном это касается редиректов с // на /. Добавление / в конце урл при его отсутствии и т.д.
Например, в htaccess есть запись:
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]
С отключенным автокомпозитом - отрабатывает нормально и редиректит с // на /.
С включенным автокомпозитом - не отрабатывает, урл остается с //
Поддержка в тикете 3701398 уверяет меня, что они за это не несут ответственности и настраивайте htaccess сами.
В общем проблема тут: /etc/nginx/bx/site_avaliable/ssl.s1.conf . В файле машиной создается много записей с переменными $*_composite_* .[CODE]# Ansible managed
#########################################################
# configuration for https-site:
# site_name: default
# site_root: /home/bitrix/www
# site_composite: enable
# site_composite_id: 02
# site_composite_var: $is_site_composite_02
# site_composite_storage: files
# web_cluster: disable
##########################################################
server {
listen 443 default_server ssl;
server_name _;
access_log /var/log/nginx/default_access.log main;
error_log /var/log/nginx/default_error.log warn;
# Enable SSL connection
# CERTIFICATE ANSIBLE MANAGED BLOCK
include bx/conf/ssl_options.conf;
ssl_certificate /home/bitrix/dehydrated/certs/site.ru/fullchain.pem;
ssl_certificate_key /home/bitrix/dehydrated/certs/site.ru/privkey.pem;
ssl_trusted_certificate /home/bitrix/dehydrated/certs/site.ru/chain.pem;
# CERTIFICATE ANSIBLE MANAGED BLOCK
set $docroot "/home/bitrix/www";
root "/home/bitrix/www";
proxy_ignore_client_abort off;
index index.php;
server_name_in_redirect off;
set $proxyserver "http://127.0.0.1:8888";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host:443;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header HTTPS YES;
# composite variables
set $composite_cache "bitrix/html_pages/${host}${composite_key}/index@${args}.html";
set $composite_file "${docroot}/${composite_cache}";
# config file
set $composite_enabled "${docroot}/bitrix/html_pages/.enabled";
# if test pass through general tests:
set $use_composite_cache "";
# global site test, the same for all sites on the server
if ($is_global_composite = 1) {set $use_composite_cache "A";}
# personal site tests, generated by site config
if ($is_site_composite_02 = 1) {set $use_composite_cache "${use_composite_cache}B";}
# custom options for sites; doesn't changes on upd ate
include bx/site_settings/default/*.conf;
# Include parameters common to all websites
include bx/conf/bitrix_general.conf;
# main location with processing composite
location / {
if (-f $composite_enabled) { se t $use_composite_cache "${use_composite_cache}C"; }
# test cache file exists
if (-f $composite_file) { set $use_composite_cache "${use_composite_cache}D"; }
if ($use_composite_cache = "ABCD") { rewrite .* /$composite_cache last; }
proxy_pass $proxyserver;
}
# Include munin and nagios web
include bx/server_monitor.conf;
}
[/CODE]
Если содержимое файла ssl.s1.conf заменить на содержимое конфига отдачи композита через PHP или закомментировать все участки связанные с переменными $*_composite_* :
[CODE]# Default SSL certificate enabled website VM 7.5.5
server {
listen 443 default_server http2 ssl;
server_name _;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
# Enable SSL connection
server_name_in_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:443;
# CERTIFICATE ANSIBLE MANAGED BLOCK
include bx/conf/ssl_options.conf;
ssl_certificate /home/bitrix/dehydrated/certs/site.ru/fullchain.pem;
ssl_certificate_key /home/bitrix/dehydrated/certs/site.ru/privkey.pem;
ssl_trusted_certificate /home/bitrix/dehydrated/certs/site.ru/chain.pem;
# CERTIFICATE ANSIBLE MANAGED BLOCK
proxy_set_header HTTPS YES;
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
# custom options for sites; doesn't changes on update
include bx/site_settings/default/*.conf;
# Include parameters common to all websites
include bx/conf/letsencrypt-challenge-tokens.conf;
include bx/conf/bitrix.conf;
# Include server monitoring API's
include bx/server_monitor.conf;
}[/CODE]То редиректы с включенным автокомпозитом начинают нормально работать.
Вопросов, конечно несколько:
Как кроме удаления всех $*_composite_* решить проблему редиректов?
Как строить правила в htaccess с учетом этой информации?
Будут ли фиксы в будущих VM? ))