2010-11-22 21 views
1

web.configの書き換えルールを使用してwww.example.com/section/index.aspxからwww.example.com/sectionにリダイレクトするにはどうすればよいですか?また、www.example.com/parent/childのようなさまざまなレベルで動作する必要があります。web.configを使用してURLからindex.aspxを削除するにはどうすればよいですか?

*私はサーバーにアクセスできないことに注意してください。基本的にweb.configファイルを編集して、アプリケーションを再構築するようにサーバーに指示することができます。

+2

で終わる、そしてどのような任意のURLは、あなたがインストールしたモジュールを書き換えている場合?たとえば、IIS 7 URL書き換えモジュールを使用していますか? –

+0

あなたは削除する必要があるすべてのディレクトリのindex.aspxですか? ASP.NET用のMVCを使用してみましたか? –

+1

@ジャスティンC:単純なHTTPModuleの修正プログラムになる可能性のあるアプリケーションのかなりの変更です; –

答えて

4

IIS7 URL Rewrite Moduleを使用することをお勧めしますが、サーバーにインストールする必要があります。同時に使いやすく、強力です。既定ではインストールされていませんが、Microsoftからのものであり、かなり頻繁に使用されるため、ホストされている場合は既にインストールされている可能性があります。

あなたがasp.netの2.0以上を使っているのであれば、あなたはweb.configファイルにurlMappingsセクションを追加することができます。

<system.web> 
    <urlMappings enabled="true"> 
     <add url="~/Section" mappedUrl="~/Section/index.aspx"/> 
    </arlMappings> 
</system.web> 

しかし、これはいくつかの問題があります:まず、URLがISN「を要求した場合ASP.Netモジュールによって処理されるか、アプリケーションに渡されない場合、書き換えは起こりません。これは、たとえば、 ".aspx"ファイルを使用していないために発生します。また、一部の構成では、要求するファイルが存在する必要があります。もう1つの問題は、ワイルドカードルールがサポートされていないことです。そのため、可能なすべてのパスを個別に書き換えるルールを追加する必要があります。

最後に、asp.net rewrite httpmodulesがbinディレクトリにドロップしてweb.configに追加することができます。 url rewritingのScottGuのいくつかの(時代遅れの)オプションがあります。

0

これはおそらく大変嫌ですが、可能なレベルごとにルールを作成することで、URLからindex.aspxを削除するすべてのパスを書き直すことができました。

<rule name="Migrate to PHP"> 
<match url="^([_0-9a-z-]+).aspx"/> 
<action type="Redirect" redirectType="Permanent" url="/"/> 
</rule> 

始まると、あなたが使用しているIISのバージョンを確認することができ

<rule name="Migrate to PHP all the way"> 
<match url="^([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+).aspx"/> 
<action type="Redirect" redirectType="Permanent" url="{R:1}/{R:2}/{R:3}/{R:4}"/> 
</rule> 
関連する問題