2016-07-21 18 views
0

IIS6を実行している古いサーバーのumbraco v4 WebサイトをIIS8.5を実行している新しいサーバーに移動しました。このサイトでは、UrlRewriteModuleを使用してURLのページ名を非表示にしています404が見つかりません。誰かが助けてくれますか?ありがとうございました!UrlRewriteModuleが動作していません。

これは、URL書き換えモジュールを登録しているコードのビットである - 私は次のことを試してみました(別のスタックオーバーフローのスレッドによって提案された)が、イムはまだerror.-

を持って

<system.webServer> 
    <modules> 
    <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" /> 
    </modules> 
</system.webServer> 

012 - のsystem.webからsystem.webServer

にweb.configファイル内のHttpModules定義
<system.web> 
     <httpModules> 
      <add name="UrlRewriteModule"type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" /> 
     </httpModules> 
</system.web> 

    <system.webServer> 
    <modules> 
     <add name="UrlRewriteModule"type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" /> 
    </modules> 
<system.webServer> 

UrlRewriting.configをコピーします

<?xml version="1.0" encoding="utf-8"?> 
<urlrewritingnet xmlns="http://www.urlrewriting.net/schemas/config/2006/07"> 
    <rewrites> 
     <!-- 
       Urlrewriting.Net is a cool tool, what can make your urls look nice. 
       The rewriting is controlled with regular expressions. To get more help 
       look at http://www.urlrewriting.net/. 

       Remember to read the manual! 
       http://www.urlrewriting.net/download/UrlRewritingNet20.English.pdf 

       The sample below rewrites a url from 
       "/product/someproductid.aspx" to 
       "/product.aspx?productid=someproductid" 

       The user will not see the rewritten path! The page that will be 
       loaded from umbraco will instead be: 
       "/product.aspx?productid=someproductid" 

       <add name="produktidrewrite" 
        virtualUrl="^~/product/(.*).aspx" 
        rewriteUrlParameter="ExcludeFromClientQueryString" 
        destinationUrl="~/product.aspx?productid=$1" 
        ignoreCase="true" /> 

       This sample is usefull for a productpage, where the product comes from a 
       dynamic datasource, e.g. a database. The querystring "productid" can be loaded 
       from the template, into a macro, that then loads the product! 

       Any bugs or problems with the rewriter, contact Anders/Duckie 
      --> 

     <add name="test" 
        virtualUrl="^~/technology/(.*).aspx" 
        rewriteUrlParameter="ExcludeFromClientQueryString" 
        destinationUrl="~/technology/default.aspx" 
        ignoreCase="true" /> 


    </rewrites> 
</urlrewritingnet> 

私は、私は別のサイトで見た、このVBのクラスを試してみましたが、そのはまだ働いていない私のWebConfigでそれを登録した後 -

Imports System 
Imports System.Web 
Imports System.Data 

Public Class URLRedirector 
    Implements IHttpModule 

    Private mdsRedirect As DataSet 

    Public Sub Init(ByVal TheApp As HttpApplication) Implements IHttpModule.Init 
     AddHandler TheApp.BeginRequest, AddressOf Me.Application_BeginRequest 
     ' Cache the redirection file in a dataset. 
     mdsRedirect = New DataSet() 
     mdsRedirect.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/Redirection.xml")) 
    End Sub 

    Public Sub Dispose() Implements IHttpModule.Dispose 
     mdsRedirect = Nothing 
    End Sub 

    Private Sub Application_BeginRequest(ByVal Source As Object, ByVal e As EventArgs) 
     Dim oApp As HttpApplication = CType(Source, HttpApplication) 
     Dim strRequestUri As String 

     strRequestUri = oApp.Request.Url.AbsoluteUri.ToLower() 

     ' OPTION 1: Process all requests (use when running in Visual Studio)... 
     ' Redirect known paths and just let the others fall through. 
     ' Call RedirectKnownPath(oApp, strRequestUri) 

     ' OPTION 2: Process only the 404 requests (use when running under IIS)... 
     ' For this module to work under IIS, you must configure the web site to redirect 
     ' all 404 requests back to the application. 
     If strRequestUri.Contains("?404;") Then 
      If Not RedirectKnownPath(oApp, strRequestUri) Then 
       ' Send all 404 requests for unknown paths to the default page. 
       oApp.Response.Redirect("~/Default.aspx") 
      End If 
     End If 
    End Sub 

    Private Function RedirectKnownPath(ByVal oApp As HttpApplication, ByVal strRequestUri As String) As Boolean 
     Dim strOriginalUri As String = strRequestUri 
     Dim intPos As Integer 
     Dim boolPathRedirected As Boolean = False 
     Dim oRow As DataRow 
     Dim strRequestPath As String 
     Dim strDestinationUrl As String 

     ' Extract the original URL if you received a 404 URL. 
     intPos = strRequestUri.IndexOf("?404;") 
     If intPos > 0 And strRequestUri.Length > (intPos + 5) Then 
      strOriginalUri = strRequestUri.Substring(intPos + 5) 
     End If 

     ' Redirect the request if you find a matching request path. 
     For Each oRow In mdsRedirect.Tables(0).Rows 
      strRequestPath = Convert.ToString(oRow("RequestPath")).ToLower() 
      If strOriginalUri.EndsWith(strRequestPath) Then 
       strDestinationUrl = Convert.ToString(oRow("Target")) 
       Call oApp.Response.Redirect(strDestinationUrl, False) 
       boolPathRedirected = True 
       Exit For 
      End If 
     Next 

     Return boolPathRedirected 
    End Function 
End Class 
+0

あなたは、config.xmlからの書き換えルールを含めることができます。また、失敗した要求トレースを有効にすると、エラーに関する詳細情報を収集することができます。 –

+0

こんにちはフィル。 TheUrlRewriting configは何も表示しないので、testというエントリを追加しても、同じエラーが表示されます。 –

+0

また、私は失敗した要求トレースを有効にしました。 –

答えて

1

私はそれがだUmbracoに付属、UrlRewriteモジュールを使用することはありません小さいものはOKですが、それ以上はうまく機能しません。私はそれがある時点(おそらくV8)でコアから削除されていると信じています。

IISパイプラインの一部として実行されるIIS URL書き換えモジュールを使用するほうがずっと簡単です。さらに多くの機能をサポートしています。あなたがここにモジュールを見つけることができ

http://www.iis.net/downloads/microsoft/url-rewrite

+0

こんにちはティム、それは非常に感謝しました! –

関連する問題