伪命题:PHP识别url重写请求
手上有一个网站,然后启用了伪静态,因为一些设置上的原因,一段时间后,发现收录的都是.php的文件,而启用的伪静态地址则收录很少,在更改设置后,想尽快去掉.php的收录,然后想将.php的地址转向.html地址。 参考下面一篇文章后,在程序里编写对'HTTP_X_REWRITE_URL’等变量的判断,然后设置转向,返回多重重定向错误。尝试在伪静态规则里编写规则301重定向,还是不行。 在参考其他一些大型网站设置后,发现并没有哪个网站在启用伪静态后还限制对.PHP的访问。 在实际中,对'HTTP_X_REWRITE_URL’的判断并不能识别是伪静态转向还是用户或蜘蛛访问,所以在通过此变量来实现对php文件的禁止访问本身不成立。 如果确实要禁止php的文件访问,应该将PHP文件转移到其他地方后,再在相应的伪静态规则中编写。或直接使用robots.txt实现对蜘蛛对.php文件的禁行! ____________________________________________________________________________PHP识别url重写请求(转自)现在很多PHP程序都使用了url重写技术来优化url,但是有时候我们要在PHP程序中区分默认url的请求和url重写后的请求,这该如何处理呢?
我的解决方案是在常量$_SERVER里面找答案,在不同的服务器中$_SERVER都会有一个索引用来记录重写请求访问重写之前的路径
根据我的测试,部分主流服务器的索引如下
IIS7 + Rewrite Module-> $_SERVER['HTTP_X_ORIGINAL_URL']
IIS6 + ISAPI Rewite-> $_SERVER['HTTP_X_REWRITE_URL’]
Apache2-> $_SERVER['REQUEST_URI’] 或 $_SERVER['REDIRECT_URL']
nginx-> $_SERVER['REQUEST_URI’]
有了这个参数,我们就可以在PHP中来判断请求url来自于重写地址的还是默认格式的地址了
//判定是否是IIS7 并且赋值$_SERVER['REQUEST_URI']
if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
}
//如果不是IIS7 判定是否是IIS6 并且赋值$_SERVER['REQUEST_URI']
else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
本文转载自 深圳市乐道网络科技(www.ledaokj.com) 详文参考:伪命题:PHP识别url重写请求
伪命题:PHP识别url重写请求的更多相关文章
- 需要重写URL但请求的目录不存在报404
用的是asp.net webform,在global.asax的application_beginrequest中写的代码 很简单的一个需求,在url中输入http://www.test.com/lc ...
- IIS 7 反向代理 URL重写 转发动态请求
一.反向代理是什么 有一篇文章说的挺好的 Nginx 反向代理.负载均衡.页面缓存.URL重写及读写分离详解 http://www.server110.com/nginx/201402/5534.ht ...
- asp.net mvc 中 一种简单的 URL 重写
asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...
- 【思路】-URL重写
URL重写 重写原理 过程分析 疑惑地方 lookfor app.Request.ApplicationPath如果有子目录的话 这个地方可能会起到作用,暂时不确定 bool flag = url. ...
- cookie session URL重写 与考试
状态管理.Cookie.Session.URL重写 HTTP协议:无状态的连接(每次连接都是新的请求)1.隐藏字段 <input type="hidden" name=&qu ...
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...
- URL重写案例
实现url重写的基本方法: 将下载的URLRewriter.dll,放到你的web程序的bin下 然后在web.config里配置如下: <?xml version="1.0&quo ...
- URL重写:RewriteCond指令与RewriteRule 指令格式(转)
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等.本文将针对mod_rewrite和URL匹配的技术细 ...
- Asp.net实现URL重写
原文:Asp.net实现URL重写 [概述] URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程.重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读 ...
随机推荐
- iOS - OC Category 分类
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...
- Redis配置文件之————redis.conf配置及说明
基本设置 1. 备释当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写):1k =< 1000 bytes1kb =< 1024 by ...
- Redis实践操作之—— keyspace notification(键空间通知)
一.需求分析: 设置了生存时间的Key,在过期时能不能有所提示? 如果能对过期Key有个监听,如何对过期Key进行一个回调处理? 如何使用 Redis 来实现定时任务? 二.序言: 本文所说的定时任务 ...
- misc设备
WatchDog Timer驱动 混杂设备 Misc(或miscellaneous)驱动是一些拥有着共同特性的简单字符设备驱动.内核抽象出这些特性而形成一些API(在文件drivers/char/mi ...
- iphone 使用技巧
http://www.app111.com/doc/100147120_1.html(隐藏某个图标) (3)传视频 moliplayer 和itunes ---应用(在下部)找到moliplaye ...
- [js] 有趣的js面试题,你答对了吗?
题目1: 回答以下代码,alert的值分别是多少?
- Spring Bean配置默认为单实例 pring Bean生命周期
Bean默认的是单例的. 如果不想单例需要如下配置:<bean id="user" class="..." scope="singleton&q ...
- Android监听Button和ImageButton控件的点击事件
一.onClick事件 Button和ImageButton都有一个onClick事件,通过自身的.setOnClickListener(OnClickListener)方法添加点击事件 所有的控件都 ...
- Mybatis关联查询,查询出的记录数量与数据库直接查询不一致,如何解决?
<select id="findUserInfoListForMap" resultMap="BaseResultMap"> SELECT ...
- No resource found that matches the given name 'Theme.AppCompat.Light'
eclipse在新建andorid工程的时候出现找不到AppCompat.Light主题的问题,这是因为缺少支持低版本的v7包所致, 这个不是jar包,在sdk的extras->andorid- ...