2012-09-28 2 views
6

Ich habe gerade eine Website veröffentlicht, die ich mit Orchard cms erstellt habe. Ich habe sitemap.xml zum Stammordner hinzugefügt, kann aber nicht über den Browser darauf zugreifen. Ich vermute, dass ich wahrscheinlich web.config-Datei ändern muss, aber ich bin mir nicht sicher, wie.Sietmap.xml ist in einer mit Obstgarten erstellten Site nicht verfügbar. Wie man es repariert?

EDIT: Hier ist meine Webconfig. Ich weiß nicht, wie man es hier richtig formatiert. Ich bin Zugriff sitemap.xml bei woodworkingoc.com/sitemap.xml aber bekommen 404.

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use 
    the Website->Asp.Net Configuration option in Visual Studio. 
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
--> 
<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor" requirePermission="false" /> 
    </sectionGroup> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" /> 
    </configSections> 
    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="log4net.Config" value="Config\log4net.config" /> 
    </appSettings> 
    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <pages pageBaseType="Orchard.Mvc.ViewEngines.Razor.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     <add namespace="System.Linq" /> 
     <add namespace="System.Collections.Generic" /> 
     <add namespace="Orchard.Mvc.Html" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 
    <!-- 
     Set default transaction timeout to 30 minutes so that interactive debugging 
     is easier (default timeout is less than one minute) 
    --> 
    <system.transactions> 
    <defaultSettings timeout="00:30:00" /> 
    </system.transactions> 
    <system.web> 
    <!--<trust level="Medium" originUrl="" />--> 
    <httpRuntime requestValidationMode="2.0" maxRequestLength="102400" executionTimeout="360" /> 
    <!-- 
      Set compilation debug="true" to insert debugging 
      symbols into the compiled page. Because this 
      affects performance, set this value to true only 
      during development. 
    --> 
    <compilation debug="false" targetFramework="4.0" batch="true" numRecompilesBeforeAppRestart="250" optimizeCompilations="true"> 
     <buildProviders> 
     <add extension=".csproj" type="Orchard.Environment.Extensions.Compilers.CSharpExtensionBuildProviderShim" /> 
     </buildProviders> 
     <assemblies> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 
     <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <remove assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     <remove assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     <remove assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <remove assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     <remove assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <remove assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     <remove assembly="System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     <remove assembly="System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <remove assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <remove assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <remove assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <remove assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <remove assembly="System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <remove assembly="System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <remove assembly="System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <remove assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <remove assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <remove assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </assemblies> 
    </compilation> 
    <!-- 
      The <authentication> section enables configuration 
      of the security authentication mode used by 
      ASP.NET to identify an incoming user. 
    --> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Users/Account/AccessDenied" timeout="2880" /> 
    </authentication> 
    <!-- 
      The <customErrors> section enables configuration 
      of what to do if/when an unhandled error occurs 
      during the execution of a request. Specifically, 
      it enables developers to configure html error pages 
      to be displayed in place of a error stack trace. 
    --> 
    <customErrors mode="On"> 
     <error statusCode="404" reirect="/" /> 
    </customErrors> 
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Linq" /> 
     <add namespace="System.Collections.Generic" /> 
     <add namespace="Orchard.Mvc.Html" /> 
     </namespaces> 
    </pages> 
    <httpHandlers> 
     <!-- see below --> 
     <clear /> 
     <add path="robots.txt" verb="GET" type="System.Web.StaticFileHandler" /><!--allow sitemap.xml and robots.txt to be served--> 
     <add path="/sitemap.xml" verb="GET" type="System.Web.StaticFileHandler" /> 
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler" /> 
    </httpHandlers> 
    <httpModules> 
     <add name="WarmupHttpModule" type="Orchard.WarmupStarter.WarmupHttpModule, Orchard.WarmupStarter, Version=1.0.20, Culture=neutral" /> 
    </httpModules> 
    </system.web> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="WarmupHttpModule" /> 
     <add name="WarmupHttpModule" type="Orchard.WarmupStarter.WarmupHttpModule, Orchard.WarmupStarter, Version=1.0.20, Culture=neutral" /> 
    </modules> 
    <handlers accessPolicy="Script"> 
     <!-- clear all handlers, prevents executing code file extensions, prevents returning any file contents --> 
     <clear /> 
     <!--add entries for sitemap.xml and robots.txt--> 
     <add name="Robots" path="robots.txt" verb="GET" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> 
     <add name="SiteMap" path="/sitemap.xml" verb="GET" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> 
     <!-- Return 404 for all requests via managed handler. The url routing handler will substitute the mvc request handler when routes match. --> 
     <add name="NotFound" path="*" verb="*" type="System.Web.HttpNotFoundHandler" preCondition="integratedMode" requireAccess="Script" /> 
    </handlers> 
    <!-- Prevent IIS 7.0 from returning a custom 404/500 error page of its own --> 
    <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="App_Data/Dependencies" /> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0" newVersion="3.0.0.0" /> 
     <bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="2.0.0.0" newVersion="1.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.data> 
     <DbProviderFactories> 
      <remove invariant="System.Data.SqlServerCe.4.0" /> 
      <add invariant="System.Data.SqlServerCe.4.0" name="Microsoft® SQL Server® Compact 4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
     </DbProviderFactories> 
    </system.data> 
</configuration> 

Antwort

12

Unter dem <system.web> Abschnitt der web.config, stellen Sie sicher, dass Sie einen Eintrag für sitemap.xml innerhalb des <httpHandlers> Block haben:

<httpHandlers> 
    <!-- see below --> 
    <clear /> 
    <add path="robots.txt" verb="GET" type="System.Web.StaticFileHandler" /> 
    <add path="SiteMap.xml" verb="GET" type="System.Web.StaticFileHandler" /> 
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 

Auch stellen Sie sicher, dass Sie einen Eintrag in system.webServer/Handler haben, dass erlaubt sitemap.xml:

<system.webServer> 
    <handlers accessPolicy="Script,Read"> 
    <!-- clear all handlers, prevents executing code file extensions, prevents returning any file contents --> 
    <clear/> 
    <add name="Robots" path="robots.txt" verb="GET" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> 
    <add name="SiteMap" path="SiteMap.xml" verb="GET" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> 
    <!-- Return 404 for all requests via managed handler. The url routing handler will substitute the mvc request handler when routes match. --> 
    <add name="NotFound" path="*" verb="*" type="System.Web.HttpNotFoundHandler" preCondition="integratedMode" requireAccess="Script"/> 
</handlers> 

Diese Mods erlauben die öffentliche Bereitstellung von statischen Dateien wie sitemap.xml.

+0

Ich werde es versuchen. Vielen Dank! – Mr1159pm

+0

Aus irgendeinem Grund funktioniert es nicht – Mr1159pm

+0

Können Sie Ihre web.config einfügen. Was passiert, wenn Sie auf sitemap.xml zugreifen? WHat URL versuchen Sie, auf es zuzugreifen? –

5

ich persönlich lieber Advanced Sitemap Modul verwenden Sitemaps zu generieren. Es kümmert sich auch um sitemap.xml Dateiaccessibility. Sie können sich die Quellen ansehen und wahrscheinlich finden Sie eine Antwort auf Ihre Frage.

+0

Ich schaute vorher, aber es funktioniert nur mit 1.4. Danke für den Tipp tho! – Mr1159pm

+0

Ich habe meine Website heute von Orchard 1.4.0 auf 1.5.1 aktualisiert und das Modul funktioniert einwandfrei. –

2

Um die robots.txt hinzuzufügen, sind die httpHandler nicht erforderlich, da sich Orchard im integrierten Modus befindet. In der Orchard web.config im Handler Skript Teil lesen:

<handlers accessPolicy="Script,Read"> 

und fügen Sie nach dem <clear/> Teil diese beiden Zeilen:

<add name="Robots" path="robots.txt" verb="*" type="System.Web.StaticFileHandler" preCondition="integratedMode" resourceType="File" requireAccess="Read"/> 
<add name="Sitemap" path="sitemap.xml" verb="*" type="System.Web.StaticFileHandler" preCondition="integratedMode" resourceType="File" requireAccess="Read"/> 

Ich verwende Orchard 1.7.2

0

Wenn jemand diese Frage sucht, um herauszufinden, wie man nur robots.txt einrichtet (ohne sitemap.xml), dann könnte man einen einfachen Orchard Robots Module verwenden. Es gibt eine einfache Möglichkeit, robots.txt Inhalte ohne Bearbeitung web.config oder was auch immer zu bearbeiten.

Verwandte Themen