我使用url重写。我添加了一些这样的规则:
<add name="Homes" virtualUrl="^/(.*).html" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="/Default.aspx?vsm=$1" ignoreCase="true" />
<add name="HomeNew" virtualUrl="^/(.*)/(.*)/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="/Default.aspx?vsm=$1&idcnew=$2" ignoreCase="true" />
<add name="HomeNewPage" virtualUrl="^/(.*)/(.*)/page-([0-9-]*).htm" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="/Default.aspx?vsm=$1&idcnew=$2&page=$3" ignoreCase="true" />
<add name="HomeNewNew" virtualUrl="^/(.*)/(.*)/(.*)-([0-9-]*).htm" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="/Default.aspx?vsm=$1&idcnew=$2&idnew=$4" ignoreCase="true" />
我必须使用所有这些。 在HomeNewPage规则中,我用来获取目录新页面。在HomeNewNew规则中,我使用获取内容新的$ 3是新的url名称。 但是当转到这个链接:&#34; / News / Alert / page-2&#34;我的要求是&#34; vsm = News&amp; idcnew = Alertpage-2&#34; 我希望我的请求是&#34; vsm = News&amp; idcnew = Alert&amp; page = 2&#34; 请帮我!怎么了?以及如何解决它?
答案 0 :(得分:1)
如果网址是
“/默认/新闻/警报/页-2.HTML”
Regex:- /(.*)/(.*)/(.*)/page-(.*).html
“/默认/新闻/警报/页-2”
正则表达式: - /(.*)/(.*)/(.*)/ page - (。*)
您可以将新网址设为/Default.aspx?vsm=$2&idcnew=$3&page=$4
基本上每个(。*)都指定像
这样的参数如果我们采用你的第二个表达式^ /(。*)/(。*)/。在这种情况下,它可能会产生问题,如新闻/警报/页面2,因为它最终不是“/”。同样是.html的原因。 因为你没有提供网址,所以我不确定^。但只有当你的网址从第一个字符完成正则表达式时才会出现,但是,它不会导致任何问题。您可以指定或删除它。
答案 1 :(得分:0)
根据我的正则表达式:
/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*)/page-([0-9-]*)\.htm
会奏效。但是这个表达
/([a-zA-Z0-9-]*)/([a-zA-Z0-9-]*)/"
不会工作,因为它包含第三个标签的争论(第2页)。但这将工作到/新闻/警报。请检查您的代码或尝试根据我调试它有一些硬编码完成。因此你会收到错误。
我会给你一个非常简单的方法来检测你的表情。在此之后,您将能够适当地验证您的表达。
转到此链接:http://www.rexfiddle.net/
然后插入表达式并在第二个窗口中插入所需的网址。在此之后你将获得最终捕捉1,捕获2,捕获3的捕获。这些将成为你的争论(1美元,2美元......)。请参见下面的屏幕截图: