URL中的额外信息从nolayout.aspx重定向到sitecore网站中的404错误页面

时间:2015-05-21 03:54:03

标签: indexing lucene sitecore

我刚将配置文件中的nolayout.aspx移动到404错误页面,除了URL之外,一切正常。重定向到404后,URL有以下额外信息: ?404项=%2fservices-和解决方案%2fbusiness视觉%2fit-而不-边界&安培;布局= {00000000-0000-0000-0000-000000000000}&安培;设备=默认

我不希望网址包含:& layout = {00000000-0000-0000-0000-000000000000}& device = Default

配置设置是: 好的建议,休息对我来说没问题。

4 个答案:

答案 0 :(得分:2)

该网址是从sitecore生成的。这不是IIS。你得到的是项目没有布局设置。您可能还想查看未找到的网址。您可以将这些网址设置为指向web.config中的sitecore项目:

不幸的是,sitecore没有返回Not found状态代码,因此最好创建自己的处理程序来读取Item并设置状态代码。请参阅RUUD VAN FALIER的示例:http://www.partechit.nl/en/blog/2012/11/return-404-status-code-when-itemnotfound-page-is-loaded

基本上,您在Sitecore.Pipelines.HttpRequest.ExecuteRequest之后附加处理器,并根据需要覆盖RedirectOnItemNotFound和RedirectOnLayoutNotFound。

答案 1 :(得分:0)

我认为您只需要在web.config中为<system.webServer>添加一个额外的部分。

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/404" responseMode="ExecuteURL" />
</httpErrors>

RequestErrors.UseServerSideRedirect设置为true。

参考:http://herskind.co.uk/blog/2012/03/sitecore-404-without-302

答案 2 :(得分:0)

您还可以添加existingResponse="PassThrough" along with erroMode

检查详细解释:IIS httpErrors

答案 3 :(得分:0)

谢谢大家,我肯定会尝试上面给出的所有建议,并会看到哪一个在这种情况下效果最佳。

现在我只是在我的重定向模块中实现了一个代码,每次在sitecore URL上添加查询字符串

`使用Sitecore.Links.LinkManager.GetItemUrl(Sitecore.Context.Item)定义了一个baseURL;

                if (baseUrl.ToLower().Contains("?"))
                {
                    ReqUrl = baseUrl;
                    baseUrl = ReqUrl.Substring(0, ReqUrl.IndexOf("?"));
                    AppendedUrl = ReqUrl.Substring(baseUrl.Length);
                }

                string Qurl = Request.RawUrl;
                if (Qurl.ToLower().Contains("?"))
                {
                    Qurl = Request.RawUrl.Substring(0, Request.RawUrl.IndexOf("?"));
                    AppendedUrl = Request.RawUrl.Substring(Qurl.Length);
                }

                if (Qurl.ToLower().EndsWith("/"))
                {
                    baseUrl = baseUrl + "/";
                }
                //Code for URLEncoding
                string fullPath = baseUrl + AppendedUrl;
                fullPath = System.Web.HttpUtility.UrlDecode(fullPath);


                if (fullPath.ToLower().Contains("&layout"))
                {
                    fullPath = Request.RawUrl.Substring(0, Request.RawUrl.IndexOf("&layout"));
                }
                if (baseUrl.ToLower() != Qurl.ToLower())
                {
                    Response.RedirectPermanent(fullPath);
                }
            }      
        }`

所以在网站中存在URL编码和放置条件以及查询字符串类型解决了我的问题。

再次感谢您的想法,我将从他们那里看到其他方式。