.htaccess перенаправить домен umlaut
Я пытаюсь перенаправить запросы из домена umlaut в другой домен.
Мой следующий код работает с любым другим доменом, но не умлаут:
<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>
Однако, когда я вызываю домен umlaut и затем копирую его из адресной строки Google Chrome, я получаю следующее:
http://xn--frankfurter-flhe-zwb.de/
Хотя, если я использую этот обфусцированный домен в своем файле htaccess вместо "реального" домена umlaut, он тоже не будет работать.
У кого-нибудь есть идеи, как сопоставить этот домен?
2 ответа
Попробуйте использовать флаг NE, чтобы предотвратить mod_rewrite от кодирования URL. Для получения дополнительной информации о NE: http://httpd.apache.org/docs/current/rewrite/flags.html
<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>
Если это не работает, попробуйте использовать HEX-эквивалент umlaut, как это предлагается в: 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]
URL-адрес UTF-8 с умлаутом необходимо преобразовать в кодировку ACE (кодировка, совместимая с ASCII).
Вы можете использовать следующий онлайн-инструмент для преобразования международного домена с умлаутом.
http://www.xn--frankfurter-flhe-zwb.de становится xn--frankfurter-flhe-zwb.de, и это то, что нужно использовать в перенаправлении htaccess.