什么是urlMappings?
=================
根据MSDN的定义, urlMappings定义了一种URL之间的映射关系, 通过这种映射可以把一个真实的URL映射为一个看起来更加用户友好的URL.
可以在web.config中添加如下的段落来开启这个功能.
举例:
<urlMappings enabled="true"> <clear /> <add url="~/Home.aspx" mappedUrl="~/Default.aspx?tab=home" /> <remove url="~/Home2.aspx" /> </urlMappings>
在SharePoint站点中开启这个有什么影响?
==================
开启了这个功能之后, SharePoint的爬网会出错. 如果被映射的是首页, 那么会导致整个web application爬网瘫痪.
笔者在web.config中添加了下面的一段. 其中/pages/testpages.aspx甚至都不是站点的首页, 都能引起下面述及的问题.
从crawl log中看, 好像东西都还在, 其实从上次被crawl的时间可以看出来, web application中的内容, 并没有被重新爬过. 开启了urlMapping的站点, 在SSP中Reset了Index后, 爬网的截图如下:
查看爬网日志, 可以发现错误信息如下:
"Error in the Site Data Web Service."
修复:
去掉urlMapping后, 爬网结果如下:
为什么会这样?
=============
虽然SharePoint是基于ASP.NET的产品, 但是在搜索, 爬网一块的特性上, SharePoint的处理是有自己的规则的.
urlMappings实际上修改了SharePoint默认的redirect的行为, 映射的URL需要被SharePoint拿来再进行下一步的爬网动作.
所以, 自己写HttpModule也好, urlMappings也好, 尽量不要修改SharePoint的redirect规则. 如果修改了, 请尽可能贴近SharePoint默认的一些规则:
然后请测试一下爬网是否还能正常工作.
否则, 一旦爬网出现问题, 如果是由于这样的修改引起的, 排查起来就比较困难了.
urlMappings Element (ASP.NET Settings Schema)