.htaccessファイルでIDNドメインをブロックする方法は?

.htaccessファイルでIDNドメインをブロックする方法は?

.htaccessファイルでIDNドメインをブロックしたり、特殊/国際化タグを持つドメインのみをブロックしたりするにはどうすればよいですか?また、.ru .deこのようなURLをブロックしたいと思います。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*xxx\.com [NC]
RewriteRule .* - [F]
</IfModule>

私はそれを使ってウェブサイトとサブサイトをブロックします。しかし、次の特別なマーカーを含むドメインをブロックしたいと思います。ąłśćxxx.comアドレスを含むドメインではなく、特別なマーカーを含むすべてのサイトをブロックしたいと思います。その名前はIDNです。

答え1

Apacheが内部的にIDNを明示的にサポートせず、表示されたドメインを介してIDNをサポートするというテストされていない仮定に基づいて、次に始まるPunycodeエンコーディングバージョンでIDNを識別できますxn--

RewriteCond %{HTTP_REFERER} ^https?://.*xn--.* [NC]

これは特定の要件に合わせて調整する必要があるかもしれません(おそらくこれより厳格であるか、それほど厳しくないことを望むでしょう)。

関連情報