![](/img/trans.png)
[英]Custom URL rewrite rule in Blazor ASP.Net Core (server-side) not triggering when using navlink
[英]ASP Core: URL Rewrite not working when using AddIISUrlRewrite
我正在嘗試針對以下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文檔做同樣的事情:URL重寫
感謝您的幫助。
在使用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(...));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.