2009-09-25 12 views
5

私はASP.NET MVC(V 1.0)で書かれたアプリケーションを持っています。アプリケーションはIIS7で動作し、DNSはGoDaddyによって提供されます。http://mydomain.com/ctrlr/act/valへの転送http://WWW.mydomain.com/ctrlr/act/val

私は、このフォームのURLにhttp://mydomain.com/ctrlr/act/valueから来ているすべての要求を転送したいと思います:http://WWW.mydomain.com/ctrlr/act/value

は基本的に、私は誰かがhttp://mydomain.com

何に到達しようとした場合、ホスト名にWWWを追加しますこれを行う最善の方法でしょうか?

+0

これはIISの質問の多くです。あなたは、IISの注意を引くためにタグを追加する必要があります –

+0

なぜそれをしたいですか? – SLaks

+0

私は答えとしてファイルしません。これはあなたのdevスタックを変更する必要があるためです。しかし、ここで私はApacheを使って私のブログで同じ問題を解決した:http://pastie.org/630298。唯一の違いは、私はwwwの代わりにブログを追加しているということです。私の場合、同じサーバーが両方のドメイン名に答えていることにも注意してください。 –

答えて

11

私はSO use itに決めたかのようにクッキーのパフォーマンスを微調整するとき、私は、彼らが後悔信じて、あなたは私がWWWオフ使用を強制的に自分の考えに同意するだろう。このquestion

から合った答えを見つけるだろうと思いますimages.stackoverflow.comの代わりにsstatic.netを使用する必要があります。

リダイレクトを保存するには、必要なものの要点があります。

ここには、すべての受信URLにWWW接頭辞を追加するIIS7ルールがあります。あなたがコードプレックスからUrl Rewriterを使用することができます

<system.webServer>/<rewrite>/<rules> 


<rule name="Add 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> 
+0

シンプルでストレートなソリューションです。ありがとう@Dove –

+0

正規表現のパターンが '。*'である 'ignoreCase'の理由はありません。 –

1

下web.configファイルには、このXMLフラグメントをカットして貼り付けます。あなたは、次の操作を行ってwww.domain.comにすべてを強制することができます。

RewriteCond %{HTTP_HOST} !^(www).*$ [NC] 
RewriteRule ^(.*)$ http://www.%1$1 [R=301] 

それとも、あなたのドメインのためのそれをより具体的にしたい場合は

RewriteCond %{HTTP_HOST} !^www.mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://www.mydomain.com$1 [R=301] 

これは、他のリライターの全体の束をサポートしていますmod_rewriteによって提供される関数。

0

はちょうど私が代わりにIISの、アプリケーションレベルでこれを行うことにしました、私は再投稿します

別のスレッドでこれに答え、しかし。ここでは、これを行うために書いたクイックアクションフィルターです。プロジェクトのどこかにクラスを追加して、[RequiresWwww]を1つのアクションまたはコントローラ全体に追加できます。

public class RequiresWww : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      HttpRequestBase req = filterContext.HttpContext.Request; 
      HttpResponseBase res = filterContext.HttpContext.Response; 

      //IsLocal and IsLoopback i'm not too sure on the differences here, but I have both to eliminate local dev conditions. 
      if (!req.IsLocal && !req.Url.Host.StartsWith("www") && !req.Url.IsLoopback) 
      { 
       var builder = new UriBuilder(req.Url) 
       { 
        Host = "www." + req.Url.Host 
       }; 

       res.Redirect(builder.Uri.ToString()); 

      } 

      base.OnActionExecuting(filterContext); 
     } 
    } 

その後

[RequiresWwww] 
public ActionResult AGreatAction() 
{ 
... 
} 

または

[RequiresWwww] 
public class HomeController : BaseAppController 
{ 
.. 
.. 
} 

誰かに役立ちます願っています。乾杯!

関連する問題