首页 > 解决方案 > 在被 IIS 重定向之前获取原始 URL

问题描述

使用 IIS,我们目前正在重定向 URL。但是要在网站中显示规范 URL 以进行 SEO,我们需要原始 URL。

示例:实际网址:www.example.com/topsellers/mobiles 重定向网址:www.example.com/products ?type=mobiles

IIS 重写规则:

<rule name="url1" stopProcessing="true">
            <match url="topsellers/([a-zA-Z0-9]+)" />
            <action type="Rewrite" url="products?type={R:1}" />
        </rule>

C# 中有没有办法在控制器中获取实际 URL?

我曾尝试使用 C# 中的 HttpContext.Current.Request、HttpRequest 和许多其他对象,但无法访问所需的对象。如果有任何解决方案,任何人都可以帮我解决这个问题吗?

正在使用的技术栈:ASP NET CORE V2.2.1

标签: c#asp.net-coreiis

解决方案


您不会在控制器中找到它,因为规则是从服务器级别开始处理的,一直到站点和子文件夹。URL 重写本身在 IIS 管道中很早就被处理,在大多数与 IIS 相关的功能之前。

但是您可以尝试检查两个事件:PreBeginRequest全局规则和BeginRequest您的特定情况。HttpRequest这些事件中的对象应包含初始 URL。

有关详细信息: IIS URL 重写和 ASP.NET 路由


推荐阅读