gpt4 book ai didi

c# - ASP 核心 : URL Rewrite not working when using AddIISUrlRewrite

转载 作者:行者123 更新时间:2023-11-30 20:31:39 25 4
gpt4 key购买 nike

我正在尝试针对以下 3 种情况重写我的 URL:1.删​​除.php扩展名2. 移除.html 后缀3. 将所有“www”重定向到非www

我尝试使用 ASP Core 的 Rewrite 包并运行以下代码:

app.UseRewriter(new RewriteOptions().AddIISUrlRewrite(env.WebRootFileProvider, "files/IISUrlRewrite.xml"));

在文件/IISUrlRewrite.xml 上,我有这段代码:

<rewrite>
<rules>
<rule name="RemovePHP">
<match url="^(.*).php$" />
<action type="Rewrite" url="{R:1}" />
</rule>
<rule name="RemoveHTML">
<match url="^(.*).html" />
<action type="Rewrite" url="{R:1}" />
</rule>
<rule name="www to non-www" stopProcessing="true">
<match url="(www.*)" negate="false"></match>
<action type="Redirect" url="http://example.com/{R:1}"></action>
<conditions>
<add input="{HTTP_HOST}" pattern="^example\.com$" negate="true"></add>
</conditions>
</rule>
</rules>
</rewrite>

但是,这是行不通的。 www 没有被重定向,.php 没有被删除。当我把它放在我的 web.config 文件中时,这段代码工作正常。

另外,我知道我可以使用中间件 Microsoft Documentation: Url Rewriting 做同样的事情

谢谢你的帮助。

最佳答案

这通常发生在您使用 app.UseStaticFiles() 方法配置静态文件处理后添加 RewriteMiddleware 时:如果您这样做,RewriteMiddleware 可能会被负责静态文件的人取代,这可能会扰乱您的重写规则。

换句话说,不要这样做:

app.UseDefaultFiles();

app.UseStaticFiles(new StaticFileOptions(...));

app.UseRewriter(new RewriteOptions(...)); // <- MIGHT NOT WORK AS EXPECTED

改为这样做:

app.UseDefaultFiles();

app.UseRewriter(new RewriteOptions(...)); // <- WORKS

app.UseStaticFiles(new StaticFileOptions(...));

关于c# - ASP 核心 : URL Rewrite not working when using AddIISUrlRewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com