2012-09-28 11 views
6

私はオーチャードCMSを使用して作成したウェブサイトを公開しました。 sitemap.xmlをルートフォルダに追加しましたが、ブラウザ経由でアクセスできません。 私はおそらくweb.configファイルを変更する必要があると推測していますが、わかりません。orchardで作成されたサイトでは、sietmap.xmlにアクセスできません。それを修正するには?

編集: ここは私のwebconfigです。ここで正しくフォーマットする方法はわかりません。私はwoodworkingoc.com/sitemap.xmlでsitemap.xmlとのアクセスが、私は個人的にサイトマップを生成するAdvanced Sitemapモジュールを使用することを好む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> 

答えて

12

、あなたが<httpHandlers>ブロック内sitemap.xmlとのエントリを持っていることを確認してください。

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

はまた、あなたがそのsystem.webserver /ハンドラにエントリがあることを確認してください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> 

これらの改造によって、sitemap.xmlなどの静的ファイルを一般公開することができます。

+0

私はそれを試してみます。ありがとう! – Mr1159pm

+0

何らかの理由で正常に動作しない – Mr1159pm

+0

web.configを貼り付けることができますか? sitemap.xmlにアクセスするとどうなりますか?あなたは何のURLにアクセスしようとしていますか? –

5

取得しています。また、ファイルのアクセス権については、sitemap.xmlにも注意が必要です。あなたはそれがソースであることを見ることができ、あなたの質問に答えを見つける可能性が最も高いでしょう。

web.configファイルの <system.web>セクションで
+0

私は前に見ましたが、1.4でしか動作しません。先端のthoをありがとう! – Mr1159pm

+0

私はOrchard 1.4.0から1.5.1に私のウェブサイトを今日アップグレードしました。モジュールは完璧に動作します。 –

2

オーチャードが統合モードであるため、robots.txtを追加するにはhttpHandlerは必要ありません。これらの2行を

<handlers accessPolicy="Script,Read"> 

をして<clear/>部分の後に追加します:スクリプトにハンドラの一部でオーチャードのweb.configファイルに設定し、読み

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

を私はオーチャード1.7.2

使用しています
0

誰かが(sitemap.xmlなし)を設定する方法を理解するためにこの質問を探しているなら、簡単なオーチャードRobots Moduleを使用することができます。 robots.txtの内容をweb.configなどの編集なしで簡単に設定できます。

関連する問題