Reputation: 16011
I'm using URL Rewriter.NET (which I'm liking a lot, by comparison to URL Rewriting.NET - more versitile it seems, don't get me wrong, I like URL Rewriting.NET, but it didn't seem to satisfy the need, given what I know of the tool). I'm trying to use the default-documents node to redefine the default documents for the site. I've tried adding it to the rewriter node, but I get a web.config error
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>
Has anyone used this tool in the past, and does anyone know where to put this node (or proper usage)?
EDIT:
I tried the suggestion below, but it didn't seem to work quite right. Here is what is in my extra config file (this is the only contents in the config file)
<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>
Upvotes: 0
Views: 2476
Reputation: 16011
I believe the solution to this problem is the version of .NET I'm using on the website. I'm using the 2.0 runtime and the dll was built for the 1.1 runtime. I saw on the website that the 2.0 runtime is still in RC (since mid 2007), and hence I will not be using it on this production website. Instead, I figured out how to use the URL Rewriting.NET to accomplish the same goal.
I added the following rule:
<add name="Redirect54" virtualUrl="~/content/myvirtualpage.aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/content/mydestinationpage.aspx?id=9"
redirect="None"
ignoreCase="true" />
This causes a HTTP 200 response on the myvirtualpage.aspx, instead of a rewrite. The eventual goal is to have the mydestinationpage.aspx?id=9 have a 301 to myvirtualpage.aspx, which would then serve up the myvirtualpage.aspx with a 200 HTTP response. That's a bit off though.
Upvotes: 0
Reputation: 5422
This snippet works for me:
<configSections>
<section name="rewriter"
requirePermission="false"
type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"
/>
</configSections>
<rewriter>
<default-documents>
<document>index.aspx</document>
</default-documents>
</rewriter>
Edit: Be sure that where you added the wildcard application map, you also unchecked "Verify that file exists". If you don't do this, default-documents won't do anything.
Another edit: Found the installation step that illustrates the "Verify that file exists" checkbox. See step 8 here:
Upvotes: 1
Reputation: 1758
I've used urlrewriter before, and had some problems with actually setting a default document as well. However, eventually we got it (and other minor annoyances) to work by moving the urlrewriter config to different config file than web.config.
<rewriter configSource="urlrewriter.config"/>
Remember that you also have to disable default documents in IIS for the urlrewriter to work correctly. That caused a bunch of annoying problems as well.
EDIT: Don't forget to add this line to your config sections in web.config
<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
Hope this helps.
Upvotes: 1