我正在尝试将URL重写实现到我现有的应用程序中,并设法让页面和链接正常工作,但我的目标页面没有获取查询字符串值。
我的代码基于以下示例:
http://dotnetguts.blogspot.com/2008/07/url-rewriting-with-urlrewriternet.html
基本上我有一个default.aspx页面,其中包含指向另一个页面的链接;
directory_item.aspx?Item_Id=1&Category_Id=1
directory_item.aspx?Item_Id=2&Category_Id=1 and so on...
我的网络配置中的代码如下;
< rewriter >
< rewrite url="~/(.+)-(.+).aspx" to="~/directory_item.aspx?MyTitleItem_Id=$2" / >
< /rewriter >
至于上述网站链接中提到的功能,我更改了它以适应我的类别ID;
Public Shared Function GenerateURL(ByVal Title As Object, ByVal strId As Object, ByVal strCategoryId As Object) As String
Dim strTitle As String = Title.ToString()
...
...
...
'Append ID at the end of SEO Friendly URL
strTitle = "~/" & strTitle & "-" & Convert.ToString(strId) & "-" & Convert.ToString(strCategoryId) & ".aspx"
Return strTitle
End Function
在我的页面上加载directory_item.aspx我查找查询字符串值Item_Id和Category_Id,因为我实现了上面的页面只返回一个没有数据的空白页面?我错过了什么,只是不知道在哪里?任何帮助将不胜感激。
URL确实已更改为“the-title-page-2-1.aspx”并加载样式和除数据之外的所有内容。所以我的代码肯定存在一些小问题。
到目前为止我发现了什么;
通过更改Web配置文件中的代码,我得到了它的工作;除了我现在需要拉入第二个查询字符串参数;
url="(.+)-(.+).aspx" to="~/directory_item.aspx?Item_Id=$2"
有关如何使第二个查询字符串参数起作用的任何提示?感谢
答案 0 :(得分:0)
这是一个意见而非答案,因为我尝试过去使用'urlwriter.net'。
我切换到http://www.urlrewriting.net/
我发现更容易创建我想要的URL,重写规则看起来像:
<add name="News"
virtualUrl="~/news/(?:[0-9a-zA-Z-]{1,255})-([0-9]{1,7}).(?:aspx|html)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/content/news.aspx?id=$1"
rewrite="Application"
ignoreCase="true" />
在多个参数的情况下。
<add name="News List"
virtualUrl="~/news/([a-zA-Z]{1,10})/([0-9]{4})/archive.(?:aspx|html)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/content/news-list.aspx?month=$1&year=$2"
rewrite="Application"
ignoreCase="true" />
话虽如此,如果您有IIS7我建议获取URL重写模块: