2016-10-27 31 views
1

我有兩個域指向同一臺服務器。一個只有默認的ascii字符,一個包含一個北歐字符。帶有ascii字符的字符只能用於電子郵件,並且域名只會被重定向到具有特殊字符的域名。這按預期工作。Apache RewriteCond與北歐/特殊字符

現在,在我的.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

使用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] 
+0

謝謝你,做過的魅力。我檢查了http請求,並在檢查員中看到了實際的域。有種把它送走了。 – OptimusCrime