【思路】-URL重写

URL重写 

重写原理
过程分析
疑惑地方
 
lookfor app.Request.ApplicationPath如果有子目录的话 这个地方可能会起到作用,暂时不确定
bool flag = url.IndexOf('.') != -1; 标记,表示如果请求后缀包含“.”的我们才进行重写的执行
 
主要思路:使用筛选器拦截系统所有的请求,
第一步:去除掉不需要重写的请求
第二步:加载系统的重写配置规则
第三步:循环遍历每条规则,如果匹配使用系统的context.RewritePath函数将拦截的请求,转发到我们指定的ashx处理程序当中去
lookfor 到 sendto
注意地方
如何获得系统所有的请求呢?
使用app.Request.Path 【获取当前请求的虚拟路径】表示所用的来到系统当中的请求,通过识别这个值来断定请求是否转发
使用这个还有一个好处,它不带域名,可以实现二级域名的转发操作
循环判断每条规则
每一个请求到达系统当中,都需要匹配每一条规则,每次切换规则,都需要用正则表达式一个实例对象,一旦匹配成功直接跳出循环,这里是比较好性能的地方
正则注意点
完全匹配 ^$ 注意这两个符号,表示来完全匹配一个请求的虚拟路径,上面提到的Path
301的实现
301用来将非www的链接,重定向到www上面去,注意不仅仅是首页的非www跳转
是全站的跳转,所以这个地方的要求就在于必须在for规则循环判断里面写
实现的关键点是app.Request.Url.AbsoluteUri.ToLower(),识别这个绝对url,如果绝对url里面包含一条规则
http://abc.com|http://www.abc.com
也就是StartsWith http://abc.com 就应用301的函数
总结:URL的重写需要把握以上几个关键点,所以请思考
URL重写本质是什么?就是将一条请求路由到我们想路由的处理程序当中去
URL重写入口点在哪里?app.Request.Path 获得拦截的所有请求
URL重写是怎么识别判断的?通过正则表达式
重写后的参数处理
重写的url如果携带参数? 还是通过app.Request.Path
如何从lockfor中也就是重写的url中分离出请求相关的参数呢?
使用正则表达式的Replace函数,来做参数的分离,这个地方是个关键的地方
 
扩展1
301转发:系统拦截了所有的请求之后,那就可以对请求做任意的转发
扩展2
实现子目录的重写【思考中。。。】
主要的思路都清楚,但是有些细节的地方还不是特别的清楚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZenCart URL目录式链接Ceon Url Mapping SEO插件,这款插件也是大家比较喜欢的,唯一的缺点就是不自动生成友好的url,需要你手动填写url,去后台分类,产品处单击更新下才能生成,现在官方有支持zencart 1.5的,强创网络这里提供下载地址给大家下载,顺便介绍大概安装方法。 首先安装zencart系统后,看你安装的zencart是否已经集成SEO插件,如果有就先卸载掉,直接下来就是安装ZenCart SEO插件ceon url mapping,它可以实现url的目录式静态化。 1、首先去官方下载zencart模块Ceon URI Mapping (SEO)-1.5.0 2、解开压缩包后,里面有_docs(说明文档)、files、modified_core_files、template_override_files、third_party_module_integration这四个都是需要上传安装的文件,注意这里面后台admin改成你的后台目录名,includes里面还会有模板名也修改成你的。 3、把文件都上传好后,打开zencart后台。 4、找到 Modules > Ceon URI Mapping (SEO) Config,可以进行一些设置,一般默认就可以了。 5、一般主要有4类:Category、Product、Manufacturer、EZ-Page。比如分类url的优化:后台找到Catalog > Categories/Products,然后编辑或新加一个产品,最下面有url选项。麻烦吧,对于批量建站的,产品又多的人肯定会觉得特别麻烦,此模块有自动处理的模块名叫:URI Mappings Manager,不过是是收费的。 6、添加url重写规则.htaccess 1)如果网站安装在域名根目录,那么在网店安装文件夹下,新建立一个.htaccess文件,加上以下代码: RewriteEngine On # Don't rewrite any URIs ending with a file extension (ending with .[xxxxx]) RewriteCond %{REQUEST_URI} !\.[a-z]{2,5}$ [NC] # Don't rewrite admin directory RewriteCond %{REQUEST_URI} !^/admin [NC] # Don't rewrite editors directory RewriteCond %{REQUEST_URI} !^/editors [NC] # Don't rewrite cPanel directories RewriteCond %{REQUEST_URI} !/cpanel [NC] RewriteCond %{REQUEST_URI} !/frontend [NC] # Handle all other URIs using Zen Cart (index.php) RewriteRule .* index.php?%{QUERY_STRING} [L] 2)如果网站安装在文件夹下,那么规则如下: RewriteEngine On # ONLY rewrite URIs beginning with /qcweb/ RewriteCond %{REQUEST_URI} ^/qcweb/ [NC] # Don't rewrite any URIs ending with a file extension (ending with .[xxxxx]) RewriteCond %{REQUEST_URI} !\.[a-z]{2,5}$ [NC] # Don't rewrite admin directory RewriteCond %{REQUEST_URI} !^/qcweb/admin [NC] # Don't rewrite editors directory RewriteCond %{REQUEST_URI} !^/qcweb/editors [NC] # Don't rewrite cPanel directories RewriteCond %{REQUEST_URI} !/cpanel [NC] RewriteCond %{REQUEST_URI} !/frontend [NC] # Handle all other URIs using Zen Cart (index.php) RewriteRule .* index.php?%{QUERY_STRING} [L] 到此为止zencart插件安装完毕,快去后台编辑下分类和产品的URL,生成后就可以访问了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值