まず、Stackoverflowで同様の質問を読んで数時間過ごしましたが、答えがうまくいかないようです。
SEOの問題があるMVC4アプリケーションがあります。www以外はwwwにリダイレクトされません。サーバー(IIS7.5)とローカル環境(VS2010)にRewriteモジュールをインストールしました。私は多くの方法を試しましたが、どれもうまくいかないようです...
理想的には、MVC4ソリューションに書き換えルールを設定し、サーバー側の構成を行わないようにします。これは、新しいサーバーに展開する場合の方が便利だからです。
次のコードブロックをweb.configに入れようとしました:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<!-- code added for SEO non-www to www redirect -->
<rewrite>
<rules>
<rule name="Remove WWW prefix" >
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^domain\.com" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>
<!-- SEO code -->
</system.webServer>
次に、ソリューションを(正しいドメイン名で)公開しましたが、何も変更されていません。http://domain.comにアクセスしようとすると、404notfoundエラーが発生します。
この部分でいくつかのコードブロックを試しましたが、機能しません。また、サーバーでこれを構成しようとしましたが、うまくいきませんでした。最善の解決策は、web.configでこの書き換えを行い、新しいWebサーバーに公開するたびにルールが適用されるようにすることです。
誰かがこれに何か問題があると思いますか?私のweb.configはMVC4アプリケーションにあり、VS2010でソリューションを右クリックしたときに表示される[公開]メニューから公開されます。
よろしくお願いします。
ルールに対してもこのブロックを試しましたが、何も変わりません。
<rule name="Redirect to WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^domain.com$" />
</conditions>
<action type="Redirect" url="http://www.domain.com/{R:0}" redirectType="Permanent" />
</rule>