我正在尝试将请求从变音符域重定向到另一个域。
我的以下代码适用于任何其他域,但不适用于变音符号:
<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 重定向中需要使用的内容。