Index: modules/web/templates/site.erb |
=================================================================== |
--- a/modules/web/templates/site.erb |
+++ b/modules/web/templates/site.erb |
@@ -1,24 +1,86 @@ |
-server { |
+server |
+{ |
listen 80 default_server; |
listen [::]:80 default_server; |
server_name '<%= vhost %>'; |
- location / { |
+ location / |
+ { |
rewrite (.*) https://<%= vhost %>$1 permanent; |
} |
} |
-server { |
+server |
+{ |
listen 443 ssl default_server; |
listen [::]:443 ssl default_server; |
ssl_certificate sites-available/adblockplus.org_sslcert.pem; |
ssl_certificate_key sites-available/adblockplus.org_sslcert.key; |
server_name '<%= vhost %>'; |
expires 1d; |
root /var/www/<%= vhost %>; |
index index; |
default_type text/html; |
+ |
+ # Match Accept-Language header against available languages |
+ |
+ set $preferredLang ""; |
+ if ($http_accept_language ~ ^(\w\w)-(\w\w)\b) |
+ { |
+ set $preferrredLang $1_$2; |
+ } |
+ if (!-f $document_root/$preferredLang/index) |
+ { |
+ set $preferredLang ""; |
+ } |
+ |
+ set $temp "$preferredLang|$http_accept_language"; |
+ if ($temp ~ ^\|(\w\w)\b) |
+ { |
+ set $preferredLang $1; |
+ } |
+ if (!-f $document_root/$preferredLang/index) |
+ { |
+ set $preferredLang ""; |
+ } |
+ |
+ if ($preferredLang = "") |
+ { |
+ set $preferredLang "en"; |
+ } |
+ |
+ # Always redirect server root |
+ |
+ rewrite ^/$ /$preferredLang/ last; |
+ |
+ # Don't do anything if requested file exists |
+ |
+ if (-f $request_filename) |
+ { |
+ break; |
+ } |
+ if (-d $request_filename) |
+ { |
+ break; |
+ } |
+ |
+ # Redirect canonical URLs to language-specific versions |
+ |
+ set $canonical $uri; |
+ if ($canonical ~ ^(.*?)\?) |
+ { |
+ set $canonical $1; |
+ } |
+ |
+ if (-f $document_root/$preferredLang$canonical) |
+ { |
+ rewrite ^ /$preferredLang$canonical last; |
+ } |
+ if (-f $document_root/en$canonical) |
+ { |
+ rewrite ^ /en$canonical last; |
+ } |
} |