Resolved

Resolved in: 3.7.0

Topic Tags: Language URL

Symptoms

If you configure WPML with a different domain per language on a nginx server you will get redirected to the home page in the default language every time.

The problem seems to come from nginx which returns an incorrect HTTP_HOST variable when REQUEST_URI is empty.

Workaround

To resolve this, you can create a separate sever block for each domain.

For example, your typical nginx configuration will look something like this:

server {
    server_name example.com example.es;
    root /var/www/html;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
}

To resolve it, create a server block for each server_name like this:

server {
    server_name example.com;
    root /var/www/html;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
}

server {
    server_name example.es;
    root /var/www/html;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
}

Your exact configuration may vary. It is just a matter of duplicating the server block and setting a different server_name for each block.

Finally, you need to restart nginx and try again.