.neturl重写源码(重写URL)
本文目录一览:
PHP URL重写怎么实现?高手请进!
nginx的话在你的站点配置文件里面location /{}里面添加
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
}
root 配置到入口文件的路径
至于具体的路由规则,就看各个框架具体的设置了,
当然不用框架也可以依靠$_server解析里面的参数实现分发
ASP.net URL重写
第一步:下载 Intelligencia.UrlRewriter.dll组件,这个网上太多了。
第二步:添加Intelligencia.UrlRewriter.dll的引用。
第三步:在web.config中设置三个地方
1、在configSections/configSections节中加上section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" /;
2、在httpModules/httpModules节中加上add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/;
3、在configuration/configuration节中添加rewriter rewrite url="~/(.+).html$" to="~/ViewNews.aspx?ID=$1" / /rewriter (这段替换规则需要根据你的实际需要去修改,如果要重写成HTML的格式,需要在IIS中设置映射,这个网上方法非常多。其中替换规则可以设置多个。)elligencia.UrlRewriter.dll的引用。
常用规则
当使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,IIS的默认文档机制也就失去了该有的作用,以下代码就是用来重新实现默认文档的方法:
rewrite url="^(.*)/(\?.+)?$" to="$1/default.aspx$2" /
注意:使用“processing="restart"”的时候将会导致重写引擎从头开始执行所有的重写规则,此时应当注重包含“/default.aspx”字符串的处理。
如果你需要同时支持多个默认文档,那么以上代码需要修改为:
if url="^(.*)/(\?.+)?$" rewrite exists="$1/default.aspx" to="$1/default.aspx$2" / rewrite exists="$1/index.aspx" to="$1/index.aspx$2" / rewrite exists="$1/index.html" to="$1/index.html$2" //if
编辑以上规则代码的时候,尤其要注意确认文件是否存在。
此外,在使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,你会发现.gif、.css等文件无法正常访问,这是因为此时对这些文件类型的处理都被ASP.NET所拦截。修正方法如下:
rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" /
两个比较特殊的正则表达式字符是“^”和“$”(不是必须的),“^”代表URL的开头,“$”代表URL的结尾。使用这两个符号可以使您更加精确的控制重写动作,以确保程序所匹配的URL正是您想处理的。
“~/”表示当前网站应用程序运行所在的虚拟根目录,当您把网站应用程序安装于虚拟目录(或者非根目录)的时候,这尤其有用,而无须重新编写任何代码来替换您的虚拟根路径。
模式匹配在处理查询字串(QueryStrings)的时候尤其有用,这可以让您的URL去掉类似于“?id=3”的代码段,这非常有用,可以让你轻松的实现伪静态。
下面列出两个我们认为非常有特色的重写规则:
(1) 当目标URL不包含自定义查询字串的时候:
rewrite url="^~/mypage(\?.+)?$" to="~/default.aspx$1" /
此时“$1”匹配的是(\?.+)?,也就是所有的查询字串。
(2) 当目标URL包含自定义查询字串的时候:
rewrite url="^~/mypage(\?(.+))?$" to="~/default.aspx?page=mypage$2" /
注意此时需要使用“”来代替“”,这是XML文档语法的需要。
asp.net如何进行url重写
解决方法:如下,
我们的网页URL后经常会跟有多个的参数,比如Information.aspx?ID=1Type=2,这样的URL让人太直观的看到了参数,感觉不是很好,而且会导致URL很长,所以可以用下面的方法来重写URL,即可以缩短URL、又易于被搜索引擎收录,还可以隐藏真实的路径,使参数变得隐晦一点点,提高安全性。
使用C#重写URL的步骤:(以改写Information.aspx?ID=1Type=2为例)
第一步,下载MS的URLRewriter.dll,添加引用到你的Web程序的Bin文件夹下,下载地址是
第二步,下载完成后,在web.config里设置如下:
?xml version="1.0" encoding="utf-8" ? !--overred-- configuration configSections section name="RewriterConfig"type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" / /configSections RewriterConfig Rules RewriterRule LookFor~/Infor_(/d+)_(/d+)/.aspx/LookFor SendTo~/Information.aspx?ID=$1Type=$2/SendTo /RewriterRule /Rules /RewriterConfig system.web httpHandlers add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" / /httpHandlers /system.web /configuration
其中 section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" / 用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter .dll文件中。
关键的是这两句 LookFor~/Infor_(/d+)_(/d+)/.aspx/LookFor SendTo~/Information.aspx?ID=$1Type=$2/SendTo
LookFor~/Infor_(/d+)_(/d+)/.aspx/LookFor 表示,用户输入的URL(即显示的URL),_(/d+)_(/d+)/.aspx是 URL中文件名匹配的正则表达式(大家也可根据自己的需要自行设定)。
希望对你有帮助!
asp.net url怎么才能重写
通过Intelligencia.UrlRewriter.dll组件可以很轻松的在asp.net中实现url重写,只需要把Intelligencia.UrlRewriter.dll添加到项目的bin文件夹下,再在web.config中稍微配置一下就可以成功的实现asp.net中的url重写,下面讲一下具体的配置步骤。
第一步:从网上下载Intelligencia.UrlRewriter.dll文件,放到bin文件夹下。
第二步:假如要实现Default.aspx?id=25显示为Default_25.html只需要在Web.config配置如下信息。
configuration
configSections
!--UrlRewriter--
section
name="rewriter"
requirePermission="false"
type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,
Intelligencia.UrlRewriter"
/
/configSections
rewriter
rewrite
url="~/Default_(\d+).html$"
to="~/Default.aspx?id=$1"
processing="stop"
/
/rewriter
system.web
httpModules
add
type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter"
name="UrlRewriter"
/
/httpModules
/system.web
/configuration
经过上面简单的配置就可以在浏览器中输入.../Default_25.html就可以看到../Default.aspx?id=25的效果了
hehe