【发布时间】:2012-05-12 19:55:07
【问题描述】:
我一直在探索“更漂亮”的 URL,我做的第一件事就是删除扩展名(例如 .aspx)。为此,我使用了 IIS 中的 URL 重写模块。
如果我访问,现在可以使用
http://www.mysite.com/folder/filename
或
http://www.mysite.com/folder/filename.aspx
后者被重定向到第一个并加载页面。然后我尝试了以下方法:
http://www.mysite.com/folder/filename/
这会中断(正如我所料),但这似乎是糟糕的用户体验。也许作为一个经常上网的用户,我觉得没有斜线或斜线应该可以。我知道在末尾添加斜线的唯一方法是创建一个文件夹并使用默认的default.aspx 页面,如果可以的话,我想避免使用。
接着,我尝试添加一个与文件同名的目录,因此在上面的示例中,我创建了一个名为filename 的目录。在这个目录中,我创建了一个默认的default.aspx。现在,如果我尝试访问相同的 URL http://www.mysite.com/folder/filename,我将被发送到该新文件夹的 default.aspx 页面,并在 URL http://www.mysite.com/folder/filename/ 后附加一个斜杠。
这表明默认情况下,不带扩展名的 URL 会尝试访问目录,只有在未找到时 IIS 才会覆盖提供文件,因此从某种意义上说,尝试使用无扩展名的文件名来欺骗它似乎是一种黑客行为。
幸运的是,我可以完全控制文件和文件夹的名称,因此我希望可以防止发生任何事故(尽管我必须小心)。所以我的问题是:有没有一种方法可以删除文件扩展名但仍然允许附加斜杠并仍然找到文件。如果我能帮上忙,我不想创建大量目录,里面都包含 default.aspx。
【问题讨论】:
-
您有自定义的 404 处理程序页面吗?如果是这样,请使用它来执行重定向/转移到您想要的页面。
-
我确实有一个自定义 404 页面,我想我可以用它来重定向,有没有更好的方法?
-
这是我过去的做法。
-
如果没有 IIS 重写规则,很难提供明确的答案,也许您可以发布 xml 配置。
标签: asp.net url url-rewriting