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

.htaccess перенаправить умляут домен

Я пытаюсь перенаправить запросы из домена умлаута в другой домен.

Мой следующий код работает с ЛЮБЫМ другим доменом, но не с умлаутом:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^(www\.)?frankfurter-flöhe\.de/$ [NC]
  RewriteRule ^ http://kinderkultur-frankfurt.de/frankfurter-floehe-theaterprogramm.html [R=301,L]
</IfModule>

Однако, когда я вызываю домен умлаута, а затем копирую его из адресной строки Google Chrome, я получаю следующее:

http://xn--frankfurter-flhe-zwb.de/

Хотя, если я использую этот запутанный домен в моем файле htaccess вместо «настоящего» домена умляута, он тоже не работает.

Кто-нибудь знает, как сопоставить этот домен?

URL-адрес UTF-8 с умлаутом необходимо преобразовать в кодировку ACE (кодировка, совместимая с ASCII).

Вы можете использовать следующие онлайн-инструмент чтобы преобразовать международный домен с умляутами.

www.frankfurter-flöhe.de становится xn--frankfurter-flhe-zwb.de, и это то, что нужно использовать в перенаправлении htaccess.

Попробуйте использовать флаг NE, чтобы mod_rewrite не кодировал URL. Для получения дополнительной информации о NE: http://httpd.apache.org/docs/current/rewrite/flags.html#flag_ne

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^(www\.)?frankfurter-flöhe\.de/$ [NC,NE]
  RewriteRule ^ http://kinderkultur-frankfurt.de/frankfurter-floehe-theaterprogramm.html [R=301,L]
</IfModule>

Если это не сработает, попробуйте использовать шестнадцатеричный эквивалент умлаута, как это предлагается в: https://stackoverflow.com/questions/11107375/umlauts-in-htaccess-redirects

Вы пробовали:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^frankfurter-flöhe.de$ [OR]
RewriteCond %{HTTP_HOST} ^www.frankfurter-flöhe.de$
RewriteRule (.*)$ http://kinderkultur-frankfurt.de/frankfurter-floehe-theaterprogramm.html [R=301,L]