2012-09-28 8 views
6

Ho appena pubblicato un sito Web che ho creato utilizzando orchard cms. Ho aggiunto sitemap.xml alla cartella principale ma non posso accedervi tramite browser. Probabilmente ho bisogno di modificare il file web.config ma non sono sicuro di come.sietmap.xml inaccessibile in un sito creato con frutteto. Come sistemarlo?

MODIFICA: Ecco il mio webconfig. Non so come formattare correttamente qui. Io sono l'accesso al sitemap.xml woodworkingoc.com/sitemap.xml ma ottengo 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> 

risposta

12

Nella sezione <system.web> del web.config, assicuratevi di avere una voce per sitemap.xml all'interno del blocco <httpHandlers>:

<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> 

Inoltre assicuratevi di avere una voce in system.webServer/gestori che consente 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> 

Queste modifiche consentono la pubblicazione pubblica di file statici come sitemap.xml.

+0

Farò un tentativo. Grazie! – Mr1159pm

+0

Per qualche motivo non funziona – Mr1159pm

+0

Puoi incollare il tuo web.config. Cosa succede quando accedi a sitemap.xml? A quale URL stai cercando di accedervi? –

5

Io personalmente preferisco utilizzare il modulo Advanced Sitemap per generare sitemap. Si occupa anche dell'accessibilità dei file sitemap.xml. Puoi dare un'occhiata alle sue fonti e molto probabilmente troverai una risposta alla tua domanda.

+0

Ho esaminato prima ma funziona solo con 1.4. Grazie per il suggerimento! – Mr1159pm

+0

Ho aggiornato il mio sito Web oggi da Orchard 1.4.0 a 1.5.1 e il modulo funziona perfettamente. –

2

Per aggiungere il file robots.txt httpHandlers non è necessario, perché Orchard è in modalità integrata. Situato nel web.config Frutteto in parte gestori di script, leggere:

<handlers accessPolicy="Script,Read"> 

e aggiungere dopo la parte <clear/> queste due righe:

<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"/> 

sto usando Orchard 1.7.2

0

Se qualcuno sta guardando questa domanda per capire come impostare solo robots.txt (senza uno sitemap.xml), è possibile utilizzare un semplice Orchard Robots Module. Fornisce un modo semplice per impostare i contenuti di robots.txt senza modificare web.config o qualsiasi altra cosa.

Problemi correlati