ASPNET伪静态 UrlRewriteUrl重写 实现和配置转载Word格式文档下载.docx
- 文档编号:6647116
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:6
- 大小:18.07KB
ASPNET伪静态 UrlRewriteUrl重写 实现和配置转载Word格式文档下载.docx
《ASPNET伪静态 UrlRewriteUrl重写 实现和配置转载Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ASPNET伪静态 UrlRewriteUrl重写 实现和配置转载Word格式文档下载.docx(6页珍藏版)》请在冰点文库上搜索。
2、配置WEB.CONFIG文件在项目中引用这个程序集,伪静态语法...(例把.aspx的页面用.html来表示,web.config文件中-->
添加以下节点<
configuration>
<
configSections>
section
name="
RewriterConfig"
requirePermission="
false"
type="
URLRewriter.Config.RewriterConfigSerializerSectionHandler,
URLRewriter"
/>
/configSections>
RewriterConfig>
Rules>
RewriterRule>
!
--一个参数->
LookFor>
~/cn/ss_(.[d]*).html<
/LookFor>
SendTo>
~/cn/news.aspx?
id=$1<
/SendTo>
/RewriterRule>
--传两个参数的-->
~/cn/ss_(.[d]*)0(.[w]*).html<
--(.[d]*)(.[w]*).html
或者
ss_,(.[0-9]*),(.[0-9]*).html-->
[CDATA[~/cn/news.aspx?
id=$1&
sid=$2]]>
--三个参数-->
~/cn/ss_(.[d]*)0(.[w]*)0(.[w]*).html<
[CDATA[~/ZH-CN/news.aspx?
sid=$2&
n_id=$3]]>
~/dfsaddf/index(d*).html<
~/Favorites_Page.aspx<
/Rules>
/RewriterConfig>
/configuration>
system.web>
httpHandlers>
add
verb="
*"
path="
*.aspx"
URLRewriter.RewriterFactoryHandler,
*.html"
/httpHandlers>
/system.web>
--
httpModules>
URLRewriter.ModuleRewriter,
ModuleRewriter"
/httpModules>
-->
设置完以上步骤,就基本可以运行了,其中<
RewriterRule/>
标签里面就是重写的一个模块,<
LookFor/>
里面的是重写后的地址,而<
SendTo/>
则是原地址。
3、配置IIS解析.html文件
配置IIS6.0IIS配置:
网站->
属性->
虚拟目录->
配置(G)...->
映射->
通配符应用程序映射->
添加
可执行文件:
c:
frameworkv2.0.50727aspnet_isapi.dll
扩展名为:
.html
确认文件是否存在:
不选.
配置IIS7.5你的网站-->
IIS中处理程序映射-->
添加脚本映射(路径:
*.html可执行文件%windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll名称:
任意,比如Hml)
添加通配符脚本映射(路径:
*可执行文件:
C:
WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll名称:
任意,比如All)
托管处理程序映射(路径:
*可执行文件:
System.Web.UI.PageHandlerFactory名称任意比如Html-Integrate)-------->
IIS中模块-->
添加---->
(名称:
任意如All类型:
URLRewriter.ModuleRewriter把仅针对向应用程序或托管处理程序发出请求调用勾上ok)
ok
4、以上配置好之后就可以通过以下方式来访问了
例如用户输入hostname/d11.html,
服务器会把他重写为http:
//hostname/default.aspx?
id=11。
换句话说用户输入http:
//hostname/d11.html,
实际访问的是http:
//hostname/default.aspx?
id=11ActionlessForm.dllnamespace
ActionlessForm
{
public
class
Form
:
System.Web.UI.HtmlControls.HtmlForm
protected
override
void
RenderAttributes(HtmlTextWriter
writer)
writer.WriteAttribute("
name"
this.Name);
base.Attributes.Remove("
);
method"
this.Method);
this.Attributes.Render(writer);
action"
if
(base.ID
=
null)
id"
base.ClientID);
}
创建此类并对其进行编译之后,要在ASP.NETWeb应用程序中使用它,应首先将其添加到Web应用程序的References文件夹中。
然后,要使用它来代替HtmlForm类,做法是在ASP.NET网页的顶部添加以下内容:
%@RegisterTagPrefix="
skm"
Namespace="
ActionlessForm"
Assembly="
%>
然后,将<
formrunat="
server"
>
(如果有)替换为:
<
skm:
Formid="
Form1"
method="
post"
runat="
并将右边的<
/form>
标记替换为:
/skm:
Form>
成功!
虚拟主机
在网上看到,很多朋友在中做urlrewrite,用的是HttpHandle+Server.Transfer的方法。
其实这种方法是错误的。
第一,HttpHandle是实现不了urlrewrite的;
第二Server.Transfer是标准的重定向,根本不是urlrewrite。
其实,实现urlrewrite不用自己HttpHandle,也不用自己实现HttpModule,用几行代码就可以轻松实现。
我这里介绍的是在虚拟主机上,虚拟主机不同于自己的服务器,你是没有权限去修改iis,也没有权限去安装iisrewrite之类的iis插件。
但是我们仍然可以轻松完成需要的功能。
具体做法如下:
打开global.asax.cs,定位到protectedvoidApplication_BeginRequest(Objectsender,EventArgse)。
从方法名我想也能猜到它是做什么的。
输入如下代码:
Application_BeginRequest(Object
sender,
EventArgs
e)
string
oldUrl
HttpContext.Current.Request.RawUrl
;
pattern
@"
^(.+)default/(d+).aspx(?
.*)*$"
replace
"
$1default.aspx?
id=$2"
if(Regex.IsMatch(oldUrl,
pattern,
RegexOptions.IgnoreCase
|
RegexOptions.Compiled))
newUrl
Regex.Replace(oldUrl,
replace,
RegexOptions.Compiled
RegexOptions.IgnoreCase);
this.Context.RewritePath(newUrl);
}
有了上边这段代码,我访问一个类似:
.../default/123.aspx的网址,当然这个网址在我的电脑上不存在,它就会被定向到:
.../default.aspx?
id=123。
当然,利用功能强大的正则表达式,你可以任意按照自己的需要来重写url,这一切都是在服务器端默默的进行,在客户端是不会有任何察觉的。
由于是在虚拟主机上,我们只能重定向.aspx文件,如果是自己的服务器,只要把后缀名在iis中注册一下,就可以实现任意后缀名的处理。
比如你可以注册一个*.myweb这样的类型,这样别人访问default/456.myweb时,你可以把它重定向到default.aspx?
id=456。
总之一句话,只要你能想到,.net就可以帮你实现,并且这一切不需要多少的代码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASPNET伪静态 UrlRewriteUrl重写 实现和配置转载 ASPNET 静态 UrlRewriteUrl 重写 实现 配置 转载
![提示](https://static.bingdoc.com/images/bang_tan.gif)