我在Google Analytics上收到来自不同域的大量垃圾邮件,其中一个是西里尔字母编码的,因此我很难将其添加到我的.htaccess
文件中。
我想将с.новым.годом.рф
添加到.htaccess
文件中以阻止它,但我不知道该怎么做,因为保存时的文件不会保留cyrilic字符。
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?с.новым.годом.рф.*$ [NC]
转换为
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)??.?????.?????.??.*$ [NC]
我搜索过将西里尔字母转换为unicode的方法,但我没有成功。 有什么建议吗?
由于
答案 0 :(得分:1)
HTTP标头不能包含任意原始Unicode字符,因此Referer
标头在URI中包含ASCII IRI而不是西里尔字符。
因此,您需要使用规则中的URI表单进行匹配。要将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字符。