In this post, we will show how to redirect to different web pages based on the clients' language settings.
Let’s say we have an origin site which supports different languages at different locations. For example, this is the
$ curl 'http://test-edge.com/en/' Hello, world!
Note the English text, “Hello World”.
And we also have a French version under the
$ curl 'http://test-edge.com/fr/' Bonjour, le monde!
This is French text.
The goal here is when the client accesses the root location,
/, we can automatically redirect to a language-specific location. We’ll use the
Accept-Language request header sent by the clients.
As always, let’s go to the OpenResty Edge’s Admin web console. This is our sample deployment of the console. Every user has her own local deployment.
This time we use our on-going sample application for the test-edge.com domain.
Let’s enter this application.
We already have an upstream defined.
my_backend upstream has only 1 backend server. It is also the origin site we just tested at the beginning.
my_backendupstream which we just saw earlier.
/to match the root location only.
For the matched value, we select the regular expression type, “Regex”.
Here we check the “Caseless” box to do case insensitive matching.
Now we add a new action.
Choose the action type, “redirect”.
We need to make a new release to push out our new page rule, as always.
Our configuration changes do NOT require server reload, restart, or binary upgrade. So it’s very efficient and scalable.
On the terminal, we can send HTTP requests with curl.
curl -I -H 'Accept-Language: fr-CA, fr, en' http://test-edge.com/
Note that we specify 3 languages:
en. So French takes precedence over English for this request.
Run this command.
Note that it is indeed a redirect to
We can make
curl follow redirects automatically.
curl -L -H 'Accept-Language: fr, en' http://test-edge.com/
Run this command.
We can see the French text returned.
Next we’d add a generic page rule to redirect to the English page for other languages.
Add a new redirect action as before.
We can test the
/ location with the web browser. This web browser uses the English language setting.
We can see the English text “Hello, world” is displayed in the web browser.
/en/. This is what I’d like to cover today.
Yichun Zhang is the creator of the OpenResty® open source project. He is also the founder and CEO of the OpenResty Inc. company. He contributed a dozen open source Nginx 3rd-party modules, quite some Nginx and LuaJIT core patches, and designed products like OpenResty Edge, OpenResty XRay, and OpenResty Showman.
We provide the Chinese translation for this article on blog.openresty.com.cn. We welcome interested readers to contribute translations in other natural languages as long as the full article is translated without any omissions. We thank them in advance.
We always welcome talented and enthusiastic engineers to join our team at OpenResty Inc.
to explore various open source software’s internals and build powerful analyzers and
visualizers for real world applications built atop the open source software. If you are
interested, please send your resume to
email@example.com . Thank you!