Apache RewriteCond,带有北欧/特殊字符

时间:2016-10-27 13:14:23

标签: .htaccess mod-rewrite apache2

我有两个指向同一服务器的域名。一个只有默认的ascii字符,一个包含一个北欧字符。具有ascii字符的那个仅被用于电子邮件,并且域被简单地重定向到具有特殊字符的域。这可以按预期工作。

现在,在我的.htaccess文件中,我想检查域(具有特殊字符)是否缺少www。如果是,我想301重定向到www前缀的同一个域。这是我目前使用的代码。我以前多次使用它或多或少的样板,应该可以工作:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.dømain\.no [NC]
RewriteRule (.*) http://www.dømain.no/$1[R=301,L]

现在,问题是这个重定向总是被触发,即使该域具有www前缀也是如此。我尝试使用没有特殊字符的域交换域,并且它可以正常工作。

我不知道为什么Apache不能很好地使用我域中的特殊字符。我的理论是,由于字母ø,%{HTTP_HOST}包含某种格式错误的内容,这导致条件始终为真。除此之外,我无法看到我应该如何表达我的条件,否则就避免这种情况。

有没有办法让Apache以不同的方式处理这个角色?

1 个答案:

答案 0 :(得分:1)

使用IDN Conversion Tool

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.xn--dmain-vua\.no [NC]
RewriteRule (.*) http://www.xn--dmain-vua.no/$1 [R=301,L]