Skip to content

Instantly share code, notes, and snippets.

no_es_subdomains = ['devotional']
no_es_subdomains.each do |subdomain|
match "/es" => redirect(""), :constraints => { :subdomain => subdomain }
match "/es/*path" => redirect("/%{path}"), :constraints => lambda{ |req| req.host =~ /^#{subdomain}\./ && !(req.env["REQUEST_URI"] =~ /^\/es/) }
end
The goal is for any url elaposentoalto.upperroom.org/abc to be redirected to elaposentoalto.upperroom.org/es/abc
The following correctly redirects elaposentoalto.upperroom.org to elaposentoalto.upperroom.org/es, and it correctly leaves elaposentoalto.upperroom.org/es alone.
However, it incorrectly redirects elaposentoalto.upperroom.org/es/devotional to elaposentoalto.upperroom.org/es/es/devotional.
with_es_subdomains = ['elaposentoalto']
with_es_subdomains.each do |subdomain|
match "" => redirect("/es"), :constraints => { :subdomain => subdomain }
match "/*rest" => redirect("/es/%{rest}"), :constraints => lambda{ |req| req.host =~ /^#{subdomain}\./ && !(req.env["REQUEST_URI"] =~ /^es/) } "rentals"