私は条件以下の3のための再書き込み私のURLにしようとしています使用しているときに動作していない書き換え: 1.削除.PHP拡張子を 2.削除.htmlの拡張子 3.リダイレクトすべて「WWW」非WWWASPコア:URLはAddIISUrlRewrite
に私はASPコアの書き換えパッケージを使用して、次のコードを実行しようとしていた。
<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>
:ファイル/ IISUrlRewrite.xml上
app.UseRewriter(new RewriteOptions().AddIISUrlRewrite(env.WebRootFileProvider, "files/IISUrlRewrite.xml"));
を、私はこのコードを持っています
ただし、これは機能しません。 wwwはリダイレクトされません.phpは削除されていません。このコードは、web.configファイルに入れてもうまく動作します。
はまた、私は
Microsoft Documentation: Url Rewritingが助けてくれてありがとうミドルウェアを使用して同じことを行うことができます理解しています。あなたがapp.UseStaticFiles()
メソッドを使用して処理する静的ファイルを設定した後RewriteMiddlewareを追加するとき
ですか? – CPR43
返信いただきありがとうございます、それも動作していません。 – FerX32
あなたのプロジェクト構造では、たぶん 'ファイル/ IISUrlRewrite'ですか?これがプロジェクトのルートにある場合、 'env.ContentRootFileProvider'を使う必要があります。' env.WebRootFileProvider'を使うと '$/wwwroot/files/IISUrlRewrite'にあることを意味します。 'fileProvider.GetFileInfo(filePath);を手動でチェックすることで、それらのファイルプロバイダのいずれかに見つかったファイルを再確認することもできます。 –