0

我想使用 urlrewriter.net 模块将 url-rewrite 实现到 web 应用程序中。

这是我现在的场景(数字是虚构的): Browse.aspx?cid=9&countryid=85(cid 代表类别 id)

现在我想要这个 categoryname/countryname.html

所以我认为这可能有效,但它没有。这是我第一次使用它,我一定错过了一些东西。

<rewrite url="~/(.+)/(.+).html" to="~/Browse.aspx?cid=$1&amp;countryid=$2" />

也许我需要在 $1 和 $2 上使用标题而不是 id,但是查询我想的东西会困难得多?这意味着在应用程序中进行大量重建

有人可以帮我解决这个问题吗?

亲切的问候,感谢您的阅读,马克

4

4 回答 4

1

看起来您的示例将重写~/9/85.htmlBrowse.aspx?cid=9&countryid=85

我怀疑你正在寻找更友好的东西。

要解决这个问题,请考虑如何在页面中生成 *.html URL。您可以在其中嵌入类别和国家/地区名称,然后在进行 URL 重写时忽略它们。

于 2009-12-05T03:02:56.847 回答
0

您将不得不以您现在正在执行的方式在您的页面上查找 id。意思是 /mycategory/us.html 将变成 browse.aspx?cid=mycategory&countryid=us

有两种解决方案。

1)传入国家和类别名称,并在您的数据库中查找browse.aspx

2)将id添加到url。类似http://www.mysite.com/1/2/mycategory/us.html的东西。web.config 设置为:

<rewrite url="~/(\d+)/(\d+)/(.+)/(.+).html" to="~/Browse.aspx?cid=$1&amp;countryid=$2" />

希望有帮助。

于 2009-12-05T05:53:12.450 回答
0

猜猜您可能很久以前就解决或放弃了这个问题,但对于任何访问遇到类似问题的人来说,解决方案是创建自定义转换。

您可以像往常一样使用正则表达式提取友好的文本值,然后将该文本传递给在数据库中查找值并返回 ID 代码的转换。

我在我的文章中详细介绍了这一点:

于 2010-11-16T09:39:46.257 回答
0

可能,请求无法到达 urlrewriter.net 模块,因为 IIS 将其视为对某个文件的请求,而不是对 ASP.NET 的请求。您可能会发现以下文章对您有所帮助:http: //www.codeproject.com/KB/aspnet/iis-aspnet-url-rewriting.aspx

于 2009-12-05T13:53:55.480 回答