如何阻止 .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,而是通过它看到的任何域,您可以通过其 Punycode 编码版本以以下形式开头来识别 IDN xn--

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

这可能需要根据您的具体需求进行调整(也许您希望比这更加严格或不那么严格)。

相关内容