0

私のホスティング プランでは、使用できる Web アプリケーションの数は限られていますが、サブドメインは無制限です。次のように、IIS の書き換えを使用して、これらのサブドメインを利用する予定です。

<rule name="Home Rewrite" enabled="true">
  <match url="^(.*)$" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="^home\.mydomain\.com$" />
    </conditions>
  <action type="Rewrite" url="home/{R:1}" />
</rule>

これはほとんどの場合うまく機能します。私は行くことができ、http://home.mydomain.com本質的http://www.mydomain.com/homeに期待どおりのものに連れて行ってくれます。

Web Deploy を使用して公開していますが、ホストは IIS7 だと思います。

問題は、を利用したいということですが@Html.ActionLink、ソースを表示すると、仮想ディレクトリが含まれるように解決されます。

最終的には、元のアドレスに移動したときに機能するサイトになります。

http://www.mydomain.com/home/application

また、リダイレクトされたアドレスで読み込まれるが正しく機能しないサイト:

http://home.mydomain.com/application

ページ ソース内の生成された URL が元のアドレスを基準としている場合:

/home/application/Account/Login

これは、他のページ/ルート、バンドルへのリンクに適用され、基本的に~/または@Html.ActionLinkが使用されている場所であればどこでも適用されます。

どうすればこれを回避できますか? @Html.ActionLink少なくとも を使い続けたいと思っています。チルダがなくても生きていけると思います。

4

2 に答える 2

2

私はついに解決策を見つけました!

https://support.gearhost.com/entries/23689272-URL-Rewrite-サブドメイン

私のweb.config書き換えルールには追加の行が必要でした:

<rule name="Home Rewrite" enabled="true">
  <match url="^(.*)$" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="^home\.mydomain\.com$" />
      <add input="{PATH_INFO}" pattern="^/home/" negate="true" /> <!-- This one! -->
    </conditions>
  <action type="Rewrite" url="home/{R:1}" />
</rule>

今はみんな幸せです:)

于 2013-10-04T15:26:23.937 に答える
0

を使用するHtmlHelper代わりにカスタム を作成して、必要な URL を生成することができます。ActionLinkMyActionLink

于 2013-10-04T14:47:47.890 に答える