# Umbrix Update Server - Apache Configuration
# === ЧПУ (Красивые URL) ===
RewriteEngine On
# Редирект с index.php на api.php
RewriteRule ^index\.php$ api.php [L,R=301]
# API endpoints
RewriteRule ^api/latest$ api.php [L,QSA]
RewriteRule ^api/version$ api.php [L,QSA]
# === Безопасность ===
# Запретить доступ к служебным файлам
Order deny,allow
Deny from all
# Разрешить доступ только к API и downloads
Order allow,deny
Allow from all
# Запретить листинг директорий
Options -Indexes
# Запретить выполнение PHP в папке downloads
php_flag engine off
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
# === CORS Headers ===
# Разрешить CORS для API
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, OPTIONS"
Header set Access-Control-Allow-Headers "Content-Type"
# Кеширование для APK файлов
Header set Cache-Control "public, max-age=604800"
# Запрет кеширования для API
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
# === Сжатие ===
# Сжимать JSON и текстовые файлы
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
# НЕ сжимать APK файлы (они уже сжаты)
SetEnvIfNoCase Request_URI \.apk$ no-gzip dont-vary
# === MIME типы ===
AddType application/vnd.android.package-archive .apk
AddType application/json .json
# === Ограничение размера загрузки ===
php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 300
php_value max_input_time 300
# === Защита от инъекций ===
# Блокировать подозрительные запросы
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ - [F,L]
# === Логирование ===
# Кастомный формат логов
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" custom
CustomLog logs/access.log custom
# === Производительность ===
ExpiresActive On
# APK файлы кешировать на неделю
ExpiresByType application/vnd.android.package-archive "access plus 7 days"
# API не кешировать
ExpiresByType application/json "access plus 0 seconds"