htaccess 中的西里尔字符以阻止 Analytics 垃圾邮件

Cyrillic in htaccess to block Analytics spam

我有很多关于 Google 分析的垃圾邮件来自不同的域,其中一个是西里尔编码的,所以我很难将它添加到我的 .htaccess 文件中。

我想将 с.новым.годом.рф 添加到 .htaccess 文件以阻止它,但我不知道该怎么做,因为保存时文件不保留西里尔字符。

RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?с.новым.годом.рф.*$ [NC]

转换为

RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)??.?????.?????.??.*$ [NC]

我已经搜索了一种将西里尔字母转换为 unicode 的方法,但没有成功。 有什么建议吗?

谢谢

HTTP headers 不能包含任意原始 Unicode 字符,因此 Referer header 包含 ASCII URI rather than Cyrillic characters in an IRI.

所以需要在规则中使用URI-form来匹配。要将 IRI 转换为 URI,您可以在路径部分使用 URL-UTF-8 编码,在主机名上使用 IDN algorithm

例如使用 Python:

>>> u'с.новым.годом.рф'.encode('idna')
'xn--q1a.xn--b1aube0e.xn--c1acygb.xn--p1ai'

所以:

RewriteCond %{HTTP_REFERER} ^https?://(www\.)?xn--q1a\.xn--b1aube0e\.xn--c1acygb\.xn--p1ai.*$ [NC]

为您的 .htaccess 文件寻找一个不会破坏完美 Unicode 字符的文本编辑器仍然是个好主意。