Назад | Перейти на главную страницу

Перенаправить URL-адреса с разных языков на их английский аналог в htaccess

Я пытаюсь перенаправить языковые URL, заканчивающиеся на /?lang=da, /?lang=de и /?lang=nl на тот же URL, но заканчивающийся на /?lang=en.

Так

www.example.com/accommodation/hotel-room-1/?lang=da

должен привести к

www.example.com/accommodation/hotel-room-1/?lang=en

и т.п.

Есть ли способ использовать для этого подстановочные знаки?

Если этих языковых версий больше не существует, вы можете реализовать перенаправление с помощью mod_rewrite в своем корне. .htaccess файл.

Например, в верхней части вашего .htaccess файл попробуйте следующее:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^lang=(da|de|nl)$
RewriteRule (.*) /$1?lang=en [R=301,L]

Это 301 редирект /<anything>?lang=da (или de или nl) к тому же URL-пути, но с lang=en. Как и в вашем примере, /accommodation/hotel-room-1/?lang=da перенаправляет на /accommodation/hotel-room-1/?lang=en.

В $1 обратная ссылка захватывает URL-путь из запрошенного URL.

Обратите внимание, что предпочтительнее сначала протестировать с 302 (временными) перенаправлениями, чтобы избежать кеширования любых ошибочных перенаправлений, и менять на 301 только тогда, когда вы уверены, что он работает должным образом.