.htaccess 重定向变音符号域名

.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 文件中使用该混淆域而不是“真实”的变音域,它也不起作用。

有人知道如何匹配该域名吗?

答案1

尝试使用 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

答案2

您是否尝试过:

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]

答案3

带有变音符号的 UTF-8 URL 需要转换为 ACE 编码(ASCII 兼容编码)。

您可以使用以下在线工具转换带有变音符号的国际域名。

www.frankfurter-flöhe.de变成 xn--frankfurter-flhe-zwb.de,这就是 htaccess 重定向中需要使用的内容。

相关内容