带有Unicode的Url-ISAPI_重写无法识别它

带有Unicode的Url-ISAPI_重写无法识别它,unicode,utf-8,url-rewriting,iis-6,isapi-rewrite,Unicode,Utf 8,Url Rewriting,Iis 6,Isapi Rewrite,我使用ISAPI_Rewrite v2进行url重写已经有相当一段时间了。该网站是在希伯来语,所以网页的网址。 ISAPI_Rewrite v2不支持希伯来文字符,但我通过对希伯来文字符使用UTF-8(十六进制)代码克服了这个问题。 以下是一个例子: RewriteRule ^/\%D7\%A6\%D7\%95\%D7\%A8_\%D7\%A7\%D7\%A9\%D7\%A8/$ /Contact.aspx [L,I] RewriteRule ^/\%D7\%A6\%D7\%95\%D7\%A8

我使用ISAPI_Rewrite v2进行url重写已经有相当一段时间了。该网站是在希伯来语,所以网页的网址。 ISAPI_Rewrite v2不支持希伯来文字符,但我通过对希伯来文字符使用UTF-8(十六进制)代码克服了这个问题。 以下是一个例子:

RewriteRule ^/\%D7\%A6\%D7\%95\%D7\%A8_\%D7\%A7\%D7\%A9\%D7\%A8/$ /Contact.aspx [L,I]
RewriteRule ^/\%D7\%A6\%D7\%95\%D7\%A8_\%D7\%A7\%D7\%A9\%D7\%A8$ /Contact.aspx [L,I]
问题是: 在statcounter中查看我的热门页面时,我遇到了以下url:

http://mysite.com/%u05F6%u05E5%u05F8_%u05F7%u05F9%u05F8
这与我的示例中的URL规则相同,但使用Unicode!显然,ISAPI_Rewrite v2不处理这个URL,我发现用户得到了“找不到页面”

还有一些页面更复杂,例如,将URL的一部分作为查询参数发送。。它也使用Unicode

我认为只有一种解决方案——制定相同的规则,这次使用Unicode,并在代码背后处理Unicode。但解决方案有两个问题:

  • URL以Unicode而不是希伯来语为用户显示
  • 在我看来,代码背后有更多的代码,不需要这样做。我的意思是,在这个场景到达代码之前,可以/需要处理它
  • 有什么想法吗

    谢谢

    编辑: 也许IIS6可以以某种方式实现这种重定向?当IIS识别Unicode URL时,它会将其转换为UTF-8并重定向页面

    ISAPI_Rewrite v2不支持希伯来文字符,但我通过使用UTF-8克服了这个问题

    IIS通常要求您在URL中使用UTF-8。当URL不是有效的UTF-8序列时,可以回退使用默认的特定于语言环境(“ANSI”)编码,但是(a)如果服务器的语言环境不是希伯来语(代码页1255),那么这没有用,(b)仍然不完全可靠,因为一些cp1255字符串也可以是有效的UTF-8序列。因此,是的,为了可靠性,请始终使用UTF-8表格

    http://mysite.com/%u05F6%u05E5%u05F8_%u05F7%u05F9%u05F8
    
    这与我的示例中的URL规则相同,但使用Unicode

    不是真的。
    %uxxx
    语法来自JavaScript
    escape()
    函数,特定于该函数的自定义编码形式。它与标准URL编码无关。以上内容甚至不是有效的URL,某些浏览器不会接受

    您需要找到该链接的来源,并将其修复为使用正确的UTF-8-%xx编码

    同时,您可能可以使用404处理程序执行一些操作,该处理程序将重定向到规范形式

    ISAPI_Rewrite v2不支持希伯来文字符,但我通过使用UTF-8克服了这个问题

    IIS通常要求您在URL中使用UTF-8。当URL不是有效的UTF-8序列时,可以回退使用默认的特定于语言环境(“ANSI”)编码,但是(a)如果服务器的语言环境不是希伯来语(代码页1255),那么这没有用,(b)仍然不完全可靠,因为一些cp1255字符串也可以是有效的UTF-8序列。因此,是的,为了可靠性,请始终使用UTF-8表格

    http://mysite.com/%u05F6%u05E5%u05F8_%u05F7%u05F9%u05F8
    
    这与我的示例中的URL规则相同,但使用Unicode

    不是真的。
    %uxxx
    语法来自JavaScript
    escape()
    函数,特定于该函数的自定义编码形式。它与标准URL编码无关。以上内容甚至不是有效的URL,某些浏览器不会接受

    您需要找到该链接的来源,并将其修复为使用正确的UTF-8-%xx编码


    同时,您可能可以使用404处理程序执行某些操作,该处理程序将重定向到规范格式。

    如果您在IIS后面使用某些FastCGI扩展,您可以尝试配置FastCGI,以便对特定的服务器变量集使用UTF-8编码,使用注册表项FastCGIUtf8ServerVariables并将其值设置为服务器变量名称列表

    reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
    

    如果您在IIS后面使用一些FastCGI扩展,您可以尝试配置FastCGI以对特定的一组服务器变量使用UTF-8编码,使用注册表项FastCGIUtf8ServerVariables并将其值设置为服务器变量名列表

    reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
    

    我看了一下,发现大多数入口都是通过移动网络搜索(m.yahoo.com、google.com/m/)从iOS/safari进入的,或者没有参考链接,我认为这意味着网络爬虫。。我还看到一些来自我网站内部的链接——我想是因为我昨天试图修复它。我的网站代码可以处理这个unicode,但我需要一种方法将这个unicode URL重定向到UTF-8(R/RP没有重定向!它只放了一个链接…)我看了看,发现大多数入口都是通过移动网络搜索(m.yahoo.com…,google.com/m/)从iOS/safari进入的,或者没有参考链接,在我看来,这意味着网络爬虫。。我还看到一些来自我网站内部的链接——我想是因为我昨天试图修复它。我的网站代码可以处理这个unicode,但我需要一种方法将这个unicode URL重定向到UTF-8(R/RP没有重定向!它只放了一个链接…)