ServerName frontend-demo.openatlas.eu DocumentRoot /var/www/frontend-demo/dist # If you keep an .htaccess for other things, allow it; otherwise you can switch to AllowOverride None Options FollowSymLinks AllowOverride None Require all granted RewriteEngine On RewriteBase / # ========================= # Already localized? do nothing # ========================= RewriteCond %{REQUEST_URI} ^/(en|de)(/|$) [NC] RewriteRule ^ - [L] # ========================= # Bypass static & API # ========================= RewriteCond %{REQUEST_URI} ^/(assets|dist|_nuxt|static|img|images|css|js|fonts|favicon\.ico|robots\.txt|sitemap\.xml|api)(/|$) [NC] RewriteRule ^ - [L] # ========================= # Localize /entity/ # (note the leading slash in VirtualHost context) # ========================= # 1) i18n cookie RewriteCond %{REQUEST_URI} ^/entity/([0-9]+)$ RewriteCond %{HTTP:Cookie} (^|;\s*)i18n_redirected=(en|de) [NC] RewriteRule ^/entity/([0-9]+)$ /%2/entity/%1 [R=302,L,QSA] # 2) generic lang cookie RewriteCond %{REQUEST_URI} ^/entity/([0-9]+)$ RewriteCond %{HTTP:Cookie} (^|;\s*)lang=(en|de) [NC] RewriteRule ^/entity/([0-9]+)$ /%2/entity/%1 [R=302,L,QSA] # 3) Accept-Language heuristic RewriteCond %{REQUEST_URI} ^/entity/([0-9]+)$ RewriteCond %{HTTP:Accept-Language} ^de [NC] RewriteRule ^/entity/([0-9]+)$ /de/entity/%1 [R=302,L,QSA] # 4) Fallback to English RewriteCond %{REQUEST_URI} ^/entity/([0-9]+)$ RewriteRule ^/entity/([0-9]+)$ /en/entity/%1 [R=302,L,QSA] # ========================= # SPA fallback # ========================= RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ /index.html [L] # Optional: gzip, caching, etc. can go here # Enable ETag and sensible caching for assets if you like: ExpiresActive On ExpiresDefault "access plus 7 days"