【问题标题】:Url with Unicode - ISAPI_Rewrite doesnt recognize it带有 Unicode 的网址 - ISAPI 重写无法识别它
【发布时间】:2011-07-20 12:13:56
【问题描述】:

我使用 ISAPI_Rewrite v2 进行 url 重写已经有一段时间了。该网站使用希伯来语,因此页面网址。 ISAPI_Rewrite v2 不支持希伯来字符,但我通过对希伯来字符使用 UTF-8(Hex) 代码克服了这个问题。 这是一个例子:

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 查看我的热门页面时,我发现了这个网址:

http://mysite.com/%u05F6%u05E5%u05F8_%u05F7%u05F9%u05F8

这与我的示例中的 URL 规则相同,但使用的是 Unicode!显然 ISAPI_Rewrite v2 不处理这个 URL,我的用户得到“找不到页面”。

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

虽然我只有一个解决方案 - 制定相同的规则,这次使用 Unicode 并在后面的代码中处理 Unicode。但是解决方案有两个问题:

  1. 以 Unicode 而非希伯来语为用户显示 URL。
  2. 代码中包含更多代码,在我看来,不需要。我的意思是,这种情况可以/需要在到达代码之前处理..

有什么想法吗?

谢谢。

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

【问题讨论】:

    标签: unicode utf-8 url-rewriting iis-6 isapi-rewrite


    【解决方案1】:

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

    IIS 通常要求您在 URL 中使用 UTF-8。当 URL 不是有效的 UTF-8 序列时,可以使用默认的特定于区域设置 ('ANSI') 编码,但如果您的服务器的区域设置不是希伯来语(代码页 1255),则 (a) 没有用, 和 (b) 仍然不完全可靠,因为某些 cp1255 字符串也可以是有效的 UTF-8 序列。所以,是的,为了可靠性,请始终使用 UTF-8 格式。

    http://mysite.com/%u05F6%u05E5%u05F8_%u05F7%u05F9%u05F8
    

    这与我的示例中的 URL 规则相同,但使用的是 Unicode!

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

    您需要找到该链接的来源并修复它以改用正确的 UTF-8-%xx-encoding。

    与此同时,您也许可以使用 404 处理程序来做一些事情,该处理程序会重定向到规范表单。

    【讨论】:

    • 我看了一点,发现大部分入口都是通过移动网络搜索从iOS/safari(m.yahoo.com....,google.com/m/...)或没有引用链接,在我看来这意味着网络爬虫。我还看到一些来自我网站内部的链接 - 我认为这是因为我昨天试图修复它。我的网站代码可以处理这个 unicode,但我需要一种方法将这个 Unicode URL 重定向到 UTF-8(R/RP 不重定向!它只放置一个链接..)
    【解决方案2】:

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

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

    https://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/configuring-the-fastcgi-extension-for-iis-60#utf8servervars

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多