我正在使用URL Rewriter.NET(我很喜欢,与URL Rewriting.NET相比 - 看起来更多的是,不要误会我的意思,我喜欢URL Rewriting.NET,但它考虑到我对该工具的了解,似乎并不满足需要。我正在尝试使用default-documents节点重新定义网站的默认文档。我已经尝试将它添加到重写器节点,但是我收到了web.config错误
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: The element 'default-documents' is not allowed.
Source Error:
Line 187:
Line 188: <rewriter>
Line 189: <default-documents>
Line 190: <document>default.aspx</document>
Line 191: <document>index.aspx</document>
过去有没有人使用过此工具,有没有人知道放置此节点的位置(或正确用法)?
编辑:
我尝试了下面的建议,但似乎没有做得很好。这是我的额外配置文件(这是配置文件中的唯一内容)
<rewriter>
<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />
<default-documents>
<document>default.aspx</document>
<document>index.aspx</document>
</default-documents>
</rewriter>
答案 0 :(得分:1)
之前我使用过urlrewriter,并且在实际设置默认文档时遇到了一些问题。但是,最终我们通过将urlrewriter配置移动到与web.config不同的配置文件来获得它(以及其他轻微的烦恼)。
<rewriter configSource="urlrewriter.config"/>
请记住,您还必须在IIS中禁用默认文档才能使urlrewriter正常工作。这也引发了一系列恼人的问题。
编辑:不要忘记将此行添加到web.config中的配置部分
<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
希望这有帮助。
答案 1 :(得分:1)
这段代码对我有用:
<configSections>
<section name="rewriter"
requirePermission="false"
type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"
/>
</configSections>
<rewriter>
<default-documents>
<document>index.aspx</document>
</default-documents>
</rewriter>
编辑:确保添加通配符应用程序映射的位置,同时取消选中“验证文件是否存在”。如果不这样做,默认文档将不会执行任何操作。
另一个编辑:找到说明“验证文件存在”复选框的安装步骤。请参见步骤8 here:
答案 2 :(得分:0)
我相信这个问题的解决方案是我在网站上使用的.NET版本。我正在使用2.0运行时,而dll是为1.1运行时构建的。我在网站上看到2.0运行时仍在RC中(自2007年中期以来),因此我不会在这个生产网站上使用它。相反,我想出了如何使用URL Rewriting.NET来实现相同的目标。
我添加了以下规则:
<add name="Redirect54" virtualUrl="~/content/myvirtualpage.aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/content/mydestinationpage.aspx?id=9"
redirect="None"
ignoreCase="true" />
这会导致myvirtualpage.aspx上的HTTP 200响应,而不是重写。最终的目标是让mydestinationpage.aspx?id = 9有一个301到myvirtualpage.aspx,然后它将提供带有200 HTTP响应的myvirtualpage.aspx。这有点过了。