【问题标题】:URL Rewriting not working with URL ending ".ad" or ".cd"URL 重写不适用于以“.ad”或“.cd”结尾的 URL
【发布时间】:2013-07-16 09:25:55
【问题描述】:

我的自定义 URL 重写设置遇到了一些困难。我没有使用任何 3rd 方工具来管理它,只是通过查看每个请求并处理它来使用 global.asax。

我使用它的方式是这样的: www.mydomain.com/site/google.com

此页面包含有关“google.com”网站的信息。我在 URL 中使用实际域。这一切都很好。

我已经简化了我正在使用的代码,只是为了向您展示它是如何工作的示例:

Dim myContext As HttpContext = HttpContext.Current
Dim URL As String = myContext.Request.ServerVariables("URL")
If URL.ToLower.Contains("/site/") Then
    URL = URL.Trim("/")
    Dim strURL As String = URL.ToLower.Split("/")(1)
    Redirect301("/site.aspx?url=" & strURL)
    Exit Sub
End If

我遇到的问题是某些域扩展,页面只会加载自定义 404 Not Found,我不知道是什么原因。

无法加载的页面示例:

  • /site/google.ad
  • /site/google.cd

我猜系统认为 .cd 和 .ad 文件是实际的物理文件,当它没有找到它们时,它会显示自定义 404 错误。看起来请求实际上并没有通过 global.asax。在本地环境中工作时,它们实际上加载良好,但只有在实时服务器上才会出现此问题,这就是为什么试图解决这个问题是一场噩梦。

我发现的另一个问题是加载以下 URL:

  • /site/prn.com

这再次显示 404 错误,但这次不是我创建的自定义错误,而是实际看起来很难看的 .net 404 错误页面。这在本地环境中也可以正常工作。

我必须进行一些 IIS 设置或代码更改才能尝试解决此问题。

感谢您的宝贵时间:)

阿基

【问题讨论】:

  • IIS 是否有这些扩展作为 MIME?
  • 我认为 IIS 的 Application.config 会阻止这些扩展。 Documents\IISExpress\config\applicationhost.config
  • 解决了 .cd 和 .ad 扩展名的问题,但您对 /site/prn.com 为何会显示硬 404 错误有任何想法:“找不到资源。说明: HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保拼写正确。“
  • 这个扩展通过 Global.asax 路由?
  • 我为遇到相同问题的人找到了解决方法:stackoverflow.com/questions/987105/…

标签: c# asp.net .net vb.net url-rewriting


【解决方案1】:

【讨论】:

  • 快速响应和出色的答案。我知道这与某种 IIS 设置有关:)。我留下的问题是 /site/prn.com 仍然显示硬 404 错误。有什么想法吗?
猜你喜欢
  • 2016-12-08
  • 2019-09-10
  • 2012-10-05
  • 1970-01-01
  • 2019-03-13
  • 2016-01-02
  • 1970-01-01
  • 2021-08-03
  • 2019-09-04
相关资源
最近更新 更多