<VirtualHost *:443>
    ServerName ro-th.online
    DocumentRoot /var/www/html/ro-th-online/main
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/ro-th.online/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ro-th.online/privkey.pem
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

    Alias /test-apk/ /var/www/html/test-apk/
    <Directory /var/www/html/test-apk>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
        AddType application/vnd.android.package-archive .apk
        <FilesMatch "^(RagnarokMobilePreview\.apk(\.sha256)?|latest\.json(\.gz)?)$">
            Header set Cache-Control "no-cache"
        </FilesMatch>
    </Directory>

    RedirectMatch 302 ^/browser$ /browser/
    RedirectMatch 302 ^/Mobile$ /Mobile/
    Alias /browser/ /var/www/html/ro-th-online/public/
    Alias /Mobile/Build/ /var/www/html/ro-th-online/public/Build/
    Alias /Mobile/TemplateData/ /var/www/html/ro-th-online/public/TemplateData/
    Alias /Mobile/ /var/www/html/ro-th-online/mobile/
    <LocationMatch "^/browser(?:/|$)">
        AuthType Basic
        AuthName "Ro-Thailand browser owner"
        AuthBasicProvider file
        AuthUserFile /etc/apache2/ro-th-online-browser.htpasswd
        Require valid-user
    </LocationMatch>

    # WebRTC signaling only; voice audio uses DTLS/SCTP/UDP 7012.
    ProxyPass /bridge/voice-rtc ws://127.0.0.1:8090/bridge/voice-rtc retry=0
    ProxyPassReverse /bridge/voice-rtc ws://127.0.0.1:8090/bridge/voice-rtc
    ProxyPass /bridge/ ws://127.0.0.1:8088/bridge/ retry=0
    ProxyPassReverse /bridge/ ws://127.0.0.1:8088/bridge/
    # Preview-matched Payon interiors; these exact objects also back the APK catalog.
    ProxyPassMatch "^/content/maps/payon_in0[123]/map[.]bytes$" "!"
    AliasMatch "^/content/maps/payon_in01/map[.]bytes$" "/var/www/html/test-apk/patches/Maps/objects/f66c5b57ccb3caec41203901365679a47203d30e05ddefd2711442032e36386a"
    AliasMatch "^/content/maps/payon_in02/map[.]bytes$" "/var/www/html/test-apk/patches/Maps/objects/ddea884ba7bb593d200ee0a4a729b8bcd9f818cfcf0b554a21a253c0986d8f5a"
    AliasMatch "^/content/maps/payon_in03/map[.]bytes$" "/var/www/html/test-apk/patches/Maps/objects/434ebff2bff04fc4728c57e934d5f5ed8f41768ee729f211e76f369b7f253b2b"
    <LocationMatch "^/content/maps/payon_in0[123]/map[.]bytes$">
        ForceType application/octet-stream
        Header set Cache-Control "no-store"
    </LocationMatch>
    # Native-resolution browser maps; APK catalog remains unchanged.
    ProxyPassMatch "^/content/maps/(?:1@20cn2|1@adv|1@advs|1@alta|1@bamn|1@bamq|1@ch1a|1@ch1b|1@exnw|1@ghg|1@gol1|1@herbs|1@jorchs|1@jorlab|1@krns|1@mir|1@os_a|1@os_b|1@pdb|1@rgsr|1@vrcas|1@vrev|1@vrhha|1@vrsn|1@whl|2025arena2|2025arena5|2@mir|air_if|alb_ship|alberta|alberta_in|amicit01|amicit02|amicitia1|amicitia2|ba_2whs02|ba_bath|ba_in01|ba_maison|ba_pw02|bl_depth1|bl_depth2|ch1_dw|ch1_sf03|grademk|hem_dun01|hero_in2|hero_lb|herosria|icas_in|jalbe_in|jor_albe|jor_crk|jor_crk_p|jor_dun03|jor_nest|jor_root1|moc_akhet|nif_dun01|nif_dun02|paramk|prt_cas|prt_cas_q|prt_lib|prt_lib_q|prt_q|pub_cat|pvp_y_1\-4|pvp_y_2\-4|pvp_y_3\-4|pvp_y_4\-4|pvp_y_5\-4|pvp_y_6\-4|pvp_y_7\-4|pvp_y_8\-4|rag_fes_a|rebel_in|rgsr_in|slabw01|sp_os|t_garden|tra_fild01|tra_fild02|tra_fild03|uknw_ruin|uknw_ruin2|veledor|verus03|vr_cas|ygg_fruit)/map[.]bytes$" "!"
    AliasMatch "^/content/maps/1@20cn2/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@20cn2.bytes"
    AliasMatch "^/content/maps/1@adv/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@adv.bytes"
    AliasMatch "^/content/maps/1@advs/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@advs.bytes"
    AliasMatch "^/content/maps/1@alta/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@alta.bytes"
    AliasMatch "^/content/maps/1@bamn/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@bamn.bytes"
    AliasMatch "^/content/maps/1@bamq/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@bamq.bytes"
    AliasMatch "^/content/maps/1@ch1a/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@ch1a.bytes"
    AliasMatch "^/content/maps/1@ch1b/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@ch1b.bytes"
    AliasMatch "^/content/maps/1@exnw/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@exnw.bytes"
    AliasMatch "^/content/maps/1@ghg/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@ghg.bytes"
    AliasMatch "^/content/maps/1@gol1/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@gol1.bytes"
    AliasMatch "^/content/maps/1@herbs/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@herbs.bytes"
    AliasMatch "^/content/maps/1@jorchs/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@jorchs.bytes"
    AliasMatch "^/content/maps/1@jorlab/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@jorlab.bytes"
    AliasMatch "^/content/maps/1@krns/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@krns.bytes"
    AliasMatch "^/content/maps/1@mir/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@mir.bytes"
    AliasMatch "^/content/maps/1@os_a/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@os_a.bytes"
    AliasMatch "^/content/maps/1@os_b/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@os_b.bytes"
    AliasMatch "^/content/maps/1@pdb/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@pdb.bytes"
    AliasMatch "^/content/maps/1@rgsr/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@rgsr.bytes"
    AliasMatch "^/content/maps/1@vrcas/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@vrcas.bytes"
    AliasMatch "^/content/maps/1@vrev/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@vrev.bytes"
    AliasMatch "^/content/maps/1@vrhha/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@vrhha.bytes"
    AliasMatch "^/content/maps/1@vrsn/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@vrsn.bytes"
    AliasMatch "^/content/maps/1@whl/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/1@whl.bytes"
    AliasMatch "^/content/maps/2025arena2/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/2025arena2.bytes"
    AliasMatch "^/content/maps/2025arena5/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/2025arena5.bytes"
    AliasMatch "^/content/maps/2@mir/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/2@mir.bytes"
    AliasMatch "^/content/maps/air_if/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/air_if.bytes"
    AliasMatch "^/content/maps/alb_ship/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/alb_ship.bytes"
    AliasMatch "^/content/maps/alberta/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/alberta.bytes"
    AliasMatch "^/content/maps/alberta_in/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/alberta_in.bytes"
    AliasMatch "^/content/maps/amicit01/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/amicit01.bytes"
    AliasMatch "^/content/maps/amicit02/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/amicit02.bytes"
    AliasMatch "^/content/maps/amicitia1/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/amicitia1.bytes"
    AliasMatch "^/content/maps/amicitia2/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/amicitia2.bytes"
    AliasMatch "^/content/maps/ba_2whs02/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ba_2whs02.bytes"
    AliasMatch "^/content/maps/ba_bath/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ba_bath.bytes"
    AliasMatch "^/content/maps/ba_in01/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ba_in01.bytes"
    AliasMatch "^/content/maps/ba_maison/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ba_maison.bytes"
    AliasMatch "^/content/maps/ba_pw02/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ba_pw02.bytes"
    AliasMatch "^/content/maps/bl_depth1/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/bl_depth1.bytes"
    AliasMatch "^/content/maps/bl_depth2/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/bl_depth2.bytes"
    AliasMatch "^/content/maps/ch1_dw/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ch1_dw.bytes"
    AliasMatch "^/content/maps/ch1_sf03/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ch1_sf03.bytes"
    AliasMatch "^/content/maps/grademk/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/grademk.bytes"
    AliasMatch "^/content/maps/hem_dun01/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/hem_dun01.bytes"
    AliasMatch "^/content/maps/hero_in2/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/hero_in2.bytes"
    AliasMatch "^/content/maps/hero_lb/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/hero_lb.bytes"
    AliasMatch "^/content/maps/herosria/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/herosria.bytes"
    AliasMatch "^/content/maps/icas_in/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/icas_in.bytes"
    AliasMatch "^/content/maps/jalbe_in/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jalbe_in.bytes"
    AliasMatch "^/content/maps/jor_albe/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jor_albe.bytes"
    AliasMatch "^/content/maps/jor_crk/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jor_crk.bytes"
    AliasMatch "^/content/maps/jor_crk_p/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jor_crk_p.bytes"
    AliasMatch "^/content/maps/jor_dun03/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jor_dun03.bytes"
    AliasMatch "^/content/maps/jor_nest/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jor_nest.bytes"
    AliasMatch "^/content/maps/jor_root1/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/jor_root1.bytes"
    AliasMatch "^/content/maps/moc_akhet/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/moc_akhet.bytes"
    AliasMatch "^/content/maps/nif_dun01/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/nif_dun01.bytes"
    AliasMatch "^/content/maps/nif_dun02/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/nif_dun02.bytes"
    AliasMatch "^/content/maps/paramk/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/paramk.bytes"
    AliasMatch "^/content/maps/prt_cas/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/prt_cas.bytes"
    AliasMatch "^/content/maps/prt_cas_q/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/prt_cas_q.bytes"
    AliasMatch "^/content/maps/prt_lib/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/prt_lib.bytes"
    AliasMatch "^/content/maps/prt_lib_q/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/prt_lib_q.bytes"
    AliasMatch "^/content/maps/prt_q/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/prt_q.bytes"
    AliasMatch "^/content/maps/pub_cat/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pub_cat.bytes"
    AliasMatch "^/content/maps/pvp_y_1\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_1-4.bytes"
    AliasMatch "^/content/maps/pvp_y_2\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_2-4.bytes"
    AliasMatch "^/content/maps/pvp_y_3\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_3-4.bytes"
    AliasMatch "^/content/maps/pvp_y_4\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_4-4.bytes"
    AliasMatch "^/content/maps/pvp_y_5\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_5-4.bytes"
    AliasMatch "^/content/maps/pvp_y_6\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_6-4.bytes"
    AliasMatch "^/content/maps/pvp_y_7\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_7-4.bytes"
    AliasMatch "^/content/maps/pvp_y_8\-4/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/pvp_y_8-4.bytes"
    AliasMatch "^/content/maps/rag_fes_a/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/rag_fes_a.bytes"
    AliasMatch "^/content/maps/rebel_in/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/rebel_in.bytes"
    AliasMatch "^/content/maps/rgsr_in/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/rgsr_in.bytes"
    AliasMatch "^/content/maps/slabw01/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/slabw01.bytes"
    AliasMatch "^/content/maps/sp_os/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/sp_os.bytes"
    AliasMatch "^/content/maps/t_garden/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/t_garden.bytes"
    AliasMatch "^/content/maps/tra_fild01/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/tra_fild01.bytes"
    AliasMatch "^/content/maps/tra_fild02/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/tra_fild02.bytes"
    AliasMatch "^/content/maps/tra_fild03/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/tra_fild03.bytes"
    AliasMatch "^/content/maps/uknw_ruin/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/uknw_ruin.bytes"
    AliasMatch "^/content/maps/uknw_ruin2/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/uknw_ruin2.bytes"
    AliasMatch "^/content/maps/veledor/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/veledor.bytes"
    AliasMatch "^/content/maps/verus03/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/verus03.bytes"
    AliasMatch "^/content/maps/vr_cas/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/vr_cas.bytes"
    AliasMatch "^/content/maps/ygg_fruit/map[.]bytes$" "/var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002/ygg_fruit.bytes"
    <Directory /var/www/html/ro-th-online/content/browser-maps/item-graphics-20261002>
        Options -Indexes -FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    <LocationMatch "^/content/maps/(?:1@20cn2|1@adv|1@advs|1@alta|1@bamn|1@bamq|1@ch1a|1@ch1b|1@exnw|1@ghg|1@gol1|1@herbs|1@jorchs|1@jorlab|1@krns|1@mir|1@os_a|1@os_b|1@pdb|1@rgsr|1@vrcas|1@vrev|1@vrhha|1@vrsn|1@whl|2025arena2|2025arena5|2@mir|air_if|alb_ship|alberta|alberta_in|amicit01|amicit02|amicitia1|amicitia2|ba_2whs02|ba_bath|ba_in01|ba_maison|ba_pw02|bl_depth1|bl_depth2|ch1_dw|ch1_sf03|grademk|hem_dun01|hero_in2|hero_lb|herosria|icas_in|jalbe_in|jor_albe|jor_crk|jor_crk_p|jor_dun03|jor_nest|jor_root1|moc_akhet|nif_dun01|nif_dun02|paramk|prt_cas|prt_cas_q|prt_lib|prt_lib_q|prt_q|pub_cat|pvp_y_1\-4|pvp_y_2\-4|pvp_y_3\-4|pvp_y_4\-4|pvp_y_5\-4|pvp_y_6\-4|pvp_y_7\-4|pvp_y_8\-4|rag_fes_a|rebel_in|rgsr_in|slabw01|sp_os|t_garden|tra_fild01|tra_fild02|tra_fild03|uknw_ruin|uknw_ruin2|veledor|verus03|vr_cas|ygg_fruit)/map[.]bytes$">
        ForceType application/octet-stream
        Header set Cache-Control "no-store"
    </LocationMatch>

    ProxyPass /content/ http://127.0.0.1:8088/content/ retry=0
    ProxyPassReverse /content/ http://127.0.0.1:8088/content/
    RewriteEngine On
    RewriteRule ^/$ - [R=404,L]
    RewriteRule ^/api/v1/(login|register|availability)$ /ro-thailand-app-api/index.php/v1/$1 [PT,L]
    Alias /ro-thailand-app-api/ /var/www/https-storefront-root/ro-thailand-app-api/
    <Directory /var/www/https-storefront-root/ro-thailand-app-api>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        AcceptPathInfo On
        Require all granted
    </Directory>

    <Directory /var/www/html/ro-th-online/main>
        Options -Indexes -FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    <Directory /var/www/html/ro-th-online/mobile>
        Options -Indexes -FollowSymLinks
        AllowOverride None
        Require all granted
        DirectoryIndex index.html
        AddType application/manifest+json .webmanifest
        Header set Cache-Control "no-cache"
    </Directory>
    <Directory /var/www/html/ro-th-online/public>
        Options -Indexes -FollowSymLinks
        AllowOverride None
        Require all granted
        DirectoryIndex index.html
        AddType application/wasm .wasm
        AddType application/octet-stream .data
        Header set Cache-Control "no-cache"
        <FilesMatch "^WebPreview\.data\.(35069e10|3f45337d|da95c328|03a0917b|aa66a9a2|a2c2a9eb|9ba5bb8b|826cbfde|95c25684|811e8f5c|9d542757|6ee5bb31|2ec36b61|f0c5ed1b|e5b689ab|845531b1|ecb16fc5|2e980a49|659e6266|14515af5|89773500|f398e377|78423282|cf92bb41|3276ed86|015f920f|f65b7bbc|00607cd0|201a3a59|548107c9|b5b8e0af|8ac7a48f|35ea7f5e|546d3ff7|e35e2cb0|f2c76fd9|f0ccb836)\.br$">
            SetEnv no-gzip 1
            Header set Content-Encoding "br"
            Header set Content-Type "application/octet-stream"
            Header set Cache-Control "public, max-age=31536000, immutable"
        </FilesMatch>
        <FilesMatch "^WebPreview\.data\.(3f45337d|da95c328|03a0917b|aa66a9a2|a2c2a9eb|9ba5bb8b|826cbfde|95c25684|811e8f5c|9d542757|6ee5bb31|2ec36b61|f0c5ed1b|e5b689ab|845531b1|ecb16fc5|2e980a49|659e6266|14515af5|89773500|f398e377|78423282|cf92bb41|3276ed86|015f920f|f65b7bbc|00607cd0|201a3a59|548107c9|b5b8e0af|8ac7a48f|35ea7f5e|546d3ff7|e35e2cb0|f2c76fd9|f0ccb836)\.part[0-9]{3}\.gz$">
            SetEnv no-gzip 1
            Header set Content-Encoding "gzip"
            Header set Content-Type "application/octet-stream"
            Header set Cache-Control "public, max-age=31536000, immutable"
        </FilesMatch>
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/ro-th-download-error.log
    CustomLog ${APACHE_LOG_DIR}/ro-th-download-access.log combined
</VirtualHost>
