簡體   English   中英

ASP核心:使用AddIISUrlRewrite時URL重寫不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM