http://148bc.com/Guest/?Action=Index
http://148bc.com/User/?Action=My
这样的url地址是怎么实现的?我看了一下还是有规律的,参数后面的地址后面都带了参数,
但直接这个页面并不存在,例如:
http://148bc.com/User/My.aspx
http://148bc.com/Guest/Index.aspx他这个是怎么实现的呢?请大家讨论.
http://148bc.com/User/?Action=My
这样的url地址是怎么实现的?我看了一下还是有规律的,参数后面的地址后面都带了参数,
但直接这个页面并不存在,例如:
http://148bc.com/User/My.aspx
http://148bc.com/Guest/Index.aspx他这个是怎么实现的呢?请大家讨论.
那为什么我直接访问
http://148bc.com/User/My.aspx
会找不到资源呢?
http://dev.firnow.com/course/4_webprogram/asp.net/asp_netshl/200814/95823.html
2、Webconfige中添加如下代码:
<RewriterRule>
<LookFor>~/front/travel/hwlly(.[0-9]*)\.html</LookFor>
<SendTo>~/front/travel/hwlly.aspx?articleid=$1</SendTo>
</RewriterRule>
其实这个hwlly(.[0-9]*)\.html是虚拟的,并不是实际存在的。只要符合格式就行。
在想静态化的页面超链接代码替换为重写后的虚假URL:
<a href='hwlly<%#Eval ("articleid") %>.html'> <%#Eval("title") %> </a>
这样,实际网址~/front/travel/hwlly.aspx?articleid=1的地址就显示虚拟的网址~/front/travel/hwlly1.html
就是这种原理了!你说的跟这个道理一样!
Url重写太耗内存了
http://148bc.com/User/My.aspx
My 是参数值不是页面
http://148bc.com/User/?Action=My
这两个地址没有使用URL重写,只是在IIS中设置了默认访问页面,比如你在Guest用户下设置默认访问页面为default.aspx,那么你的地址相当于http://148bc.com/Guest/default.aspx?Action=Index
如果设置的默认页面时1.aspx,那么你的地址相当于http://148bc.com/Guest/1.aspx?Action=Index
MVC的是路由来实现你说的是URL重写,URL重写就是通过正则替换而已,使用URLRewrite实现
而你给出的这个地址不是很普通的地址吗?只是默认的index.aspx可以省略
index.aspx?id=1和?id=1效果一样
http://www.google.com.hk/search?q=MapPageRoute&hl=zh-CN&safe=strict&prmd=ivns&source=lnt&tbs=lr:lang_1zh-CN|lang_1zh-TW&lr=lang_zh-CN|lang_zh-TW&sa=X&ei=jkw4TcDsCcGycJuZ-d8K&ved=0CAcQpwUoAQ
等等。
http://msdn.microsoft.com/zh-cn/library/cc668201.aspx#aspnet_routing_versus_url_rewriting
中的话:
ASP.NET 路由不同于 URL 重写。 URL 重写通过在将请求发送到网页之前实际更改 URL 来处理传入请求。 例如,一个使用 URL 重写的应用程序可能会将 URL 从 /Products/Widgets/ 更改为 /Products.aspx?id=4。 此外,URL 重写通常没有相应的 API 来创建基于模式的 URL。 在 URL 重写中,如果更改了 URL 模式,则必须手动更新包含原始 URL 的所有超链接。由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。 如果必须创建一个 URL,则将参数值传递到为您生成 URL 的方法中。 若要更改 URL 模式,请在某位置更改该模式,您在应用程序中创建的基于该模式的所有链接将自动使用新模式。