不知道为什么,本来不受重视的L’Yun,却一直多灾多难,前几天空间呗停掉了,一个很以为的原因,每天将近9G的流量,晕死了,最多的一天才只有6个IP,但竟然有这么大的流量。后来查看了下日志,竟然是两首MP3引起的,每一秒钟都有人在下载。刚开始以为是百度干的,但是后来看了下在百度的位置,还不至于达到那么大的流量,然后自然而然的就想到迅雷了,看看别人的文章,可以肯定下,迅雷是个流氓! 解决方案: 1、对服务器的攻击屏蔽后,不用理会,不会造成太大影响。 2、被百度收录的是一部分MP3,因为不希望不访问网站就直接从后台下载网站的mp3,于是增加搜索引擎访问限制。在网站根目录下放置robots.txt,内容如下: User-agent: Baiduspider Disallow: /**** *表示不允许百度搜索引擎收录的路径。相对于百度,雅虎、MSN和Google的搜索引擎机器人没有那么流氓,所以不需要屏蔽。
Browsing the archives for the rewrite tag
信现在大部分用Linux VPS的朋友都在使用这个迅速传播的Nginx,今天就整理一下最常见的PHP程序的Rewrite(伪静态规则)。 WordPress: location / { index index.html index.php; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }
推荐参考地址: Mailing list ARChives 官方讨论区 http://marc.info/?l=nginx Nginx 常见应用技术指南[Nginx Tips] http://bbs.linuxtone.org/thread-1685-1-1.html 本日志内容来自互联网和平日使用经验,整理一下方便日后参考。 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行
正则表达式的一些用法示例:
文本
. 任意一个单字符
[chars] 字符类: "chars"中的任意一个字符
[^chars] 字符类: 不在"chars"中的字符
text1|text2 选择: text1 或 text2
量词
? 前面的字符出现 0 或 1 次
* 前面的字符出现 0 或 N 次(N > 0)
+ 前面的字符出现 1 或 N 次(N > 1)
分组
(text) text 组
(常用于设置一个选择的边界,或用于生成后引用:
在RewriteRule中可以用 $N 引用第N个分组)
锚
^ 锚定到行首
$ 锚定到行尾
转义
\c 对给定的字符c进行转义
(比如对".[]()"进行转义,等等)
RewriteCond指令格式
语法: RewriteCond TestString CondPattern
1) TestString是一个纯文本的字符串,但是可以包含可扩展的成分
2) CondPattern是条件pattern, 即一个应用于当前实例TestString的正则表达式, 即TestString将会被计算然后与CondPattern匹配.
3) 另外,还可以为CondPattern追加特殊的标记[flags] 作为RewriteCond指令的第三个参数。Flags是一个以逗号分隔的以下标记的列表:
‘nocase|NC’ 它使测试忽略大小写, 即TestString和CondPattern无大小写检查
‘ornext|OR’ 它以OR方式组合若干规则的条件,而不是隐含的AND。
RewriteLog 指令 说 明 设置重写引擎日志的文件名 语 法 RewriteLog file-path 作 用域 server config, virtual host 状 态 扩展(E) 模 块 mod_rewrite RewriteLog指 令设置用于记录所有重写操作的日志文件的名称。如果此文件名不以斜杠('/') 开头,则它是相对于Server Root的,此指令应该在每个服务器级别的配置中仅仅出现一次。 如果要关闭对重写操作的记录,不推荐将Filename设为/dev/null ,因为,虽然重写引擎不能输出记录了,但仍会在内部建立这个日志文件,这 样会使服务器速度降低,而且对管理员毫无益处!要关闭日志,可以删除或注解RewriteLog指令, 或者使用"RewriteLogLevel 0"的设置
本文阐述在实际应用中如何解决网管所面临的基于URL的典型问题,并详细描述了如何配置URL重写规则集以解决这些问题。
注意:根据你的服务器配置,有可能必须对这里的例子作些小修改,比如,在额外启用mod_alias和mod_userdir的 情况下要增加[PT]标志,或者为了适应目录级(.htaccess)的配置而将针对服务器级的规 则集进行重写。对一个特定的规则集应该先透彻理解然后再考虑应用,这样才能避免出现问题。
规范化URL
描述:
在有些web服务器上,一个资源会拥有多个URL。在实际应用和发布中应该使用的是规范的URL,其他的则是 简写或者只在内部使用。无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL。
Apache的URL重写规则的标志详细说明
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到 外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
做PHP项目中需要用到URL重定向技术,基本上的需求就是把比如 /user/heiyeluren 重定向到 /user.php?uid=heiyeluren 之类的URL上,当然,你也可以把 /article/200707291011.html重定向到 /article.php?id=200507291011 之类的,模拟好像是静态页面,能够隐藏URL真实地址,有助于雨鞋基本的安全防范等等。那么好像rewrite是个很好的解决办法。
要在 Apache里运行rewrite的话,必须先安装mod_rewrite的组件,就是一个mod_rewrite.c文件,然后必须在./configure的时候要放上mod_rewrite就能安装。
一般配置rewrite的话,可以在httpd.conf里面配置,也能在网页当前目录的.htaccess文件里进行定义来决定重定向去那个文件,那样的话,就非常具有灵活性了,同样也能够适合虚拟主机用户来做。
我们看一个.htaccess文件的例子
一、 为什么需要用重写规则
---- 网站的生命在于不断地进行更新和维护,根据业务发展的需求转移服务器进行维护、重新组织目录结构、变换URL甚至改变到新的域名等情况是经常发生的。为了 让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写规则)。
二、重写规则的作用范围
---- 1.使用在Apache主配置文件httpd.conf中。
---- 2.使用在httpd.conf里定义的虚拟主机配置中。
---- 3.使用在基本目录的跨越配置文件.htaccess中。