【问题标题】:IIS URL Rewriting for all Inbound URLs?所有入站 URL 的 IIS URL 重写?
【发布时间】:2011-02-03 07:01:51
【问题描述】:

希望是一个简单的问题,尽管我发现使用 Google 无法回答自己!

我在 IIS 上有一个网站,其 URL http://www.contoso.com/ 指向 C:\www\public\

已经强制目录重组,所以现在所有最初驻留在 C:\www\public\ 中的数据(Default.aspx、Product.aspx 等)现在驻留在 C:\www\public\en \ie\ - 但是,IIS 网站文档根目录仍然是 C:\www\public\

所以,基本上,我有很多指向 http://www.contoso.com/Product.aspx?id=1(等)的入站链接,现在返回 404 错误 - 正确的链接现在是 http://www.contoso.com/en/ie/Product.aspx?id=1

请考虑到我不能对目录结构或 IIS 文档根目录进行任何更改...所以我必须使用 URL 重写来解决这个问题。

是否可以捕获 所有 对 contoso.com/* 的请求并将其重写为 contoso.com/en/ie/* ??

【问题讨论】:

    标签: iis url administration url-rewriting


    【解决方案1】:

    将您网站的根目录从 C:\www\public\ 更改为 C:\www\public\en\ie\,一切都会好起来的。

    如果您因任何原因无法执行此操作,请创建自定义 404 页面并在其中重写 url 并使用 301 重定向

    见:http://searchengineland.com/url-rewriting-custom-error-pages-in-aspnet-20-12234

    【讨论】:

    • 请考虑我不能对目录结构或 IIS 文档根目录进行任何更改...所以我必须使用 URL 重写来解决这个问题。文件存在于 /en/ie/ 目录级别之上,仍然通过 HTTP 提供服务。
    • 这是一个仅适用于您网站的 IIS 设置
    • 我必须重申,除了 URL 重写之外,我不能对 IIS 进行任何修改。我希望我能,但在目前的情况下,我不能。我知道它并不完美,但它就是这样。带有 301 重定向的自定义 404 页面不会导致真正的 404 错误无限循环吗?
    • 对于您收到的每个网址,您检查“en/ie/”是否在其中,如果没有重定向到“en/ie/pagename.aspx”,那么如果您收到 404 为“en/” ie/" 页面会被当作 404 处理,不会被重定向
    【解决方案2】:

    正如 Ivo 建议的那样,使用 url 重写您可以设置与旧 url 模式匹配的入站规则并重定向到新模式

    http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2013-06-16
      相关资源
      最近更新 更多