电话(手机)的”呼叫转移”功能可以很方便地将来电转移到另外一部电话(或手机)上,如果手机没电、 外出时,可以设置呼叫转移,从而不漏掉任何重要的电话。设置前需要确认是否已经开通这项功能,另外呼叫转移是通话是要收费的,如果手机A转到B,呼叫A 时,B接通,这时AB同时计费(如果B是固定电话、小灵通、或者被叫免费的手机套餐是不收费的),具体的标准可以询问服务商。
【有些呼叫转移,事先要向运行服务商开通的哦】,下面是几种常见的电话呼叫转移设置方法:
固定电话(中国电信、中国网通):
【无条件转移】设定:*57*电话号码#  取消:#57#
【无应答转移】设定:*41*电话号码#  取消:#41#
【遇忙转移】 设定:*40*电话号码#  取消:#40#
小灵通:
【无条件转移】设定:*57*电话号码#  取消:#57#
【无应答转移】设定:*41*电话号码#  取消:#41#
【遇忙转移】 设定:*40*电话号码#  取消:#40#
【不可及转移】设定:*45*电话号码#      取消:#45#
(有的地方可能是42,具体咨询当地10000)
GSM手机(中国移动、中国联通 大多数用户):(设置空号后,系统提示拨叫的是空号)
【无条件转移】设定:**21*电话号码#   取消:##21#
【无应答转移】设定:**61*电话号码#   取消:##61#
【遇忙转移】 设定:**67*电话号码#     取消:##67#
CDMA手机(中国联通用户):
【无条件转移】设定:*72电话号码   取消:*720
【无应答转移】设定:*92电话号码   取消:*920
【遇忙转移】 设定:*90电话号码   取消:*900

铁通固定电话转移设置:
1 无应答转移
登记:拨号,*41*TN#
取消:拨号,#41#
2 遇忙转移
登记:拨号,*40*TN1#
取消:拨号,#40#
3 无条件转移
登记:拨号,*57*TN#
取消:拨号,#57#

发现论坛里有很多关于win7下爆音的问题,有很多人抱怨是声卡驱动的问题,但是升级声卡驱动后问题仍然存在(这里也不排除与驱动不完善有关)。但问题的真正原因却处在windows7自身的服务进程上。
     微软想通过控制cpu来优化多媒体性能,殊不知却适得其反,大家优化服务的是很可以发现,跟声音相关的服务有三个,并且都是相符制约缺一不可,不然电脑发不了声。研究了很久才发现是Multimedia Class Scheduler(mmcss)这个服务,在进程里是svchost.exe,这个服务是管理任务优先级的,主要针对多媒体,优先级高了对于发展中国家的电脑来说不是好事,那样会加重cpu负担,播放多媒体文件时cpu居高不下或者时高时低。。。
那么只要把这个服务关掉就行了,不过关掉它也必须关掉windows auto服务,电脑就会发不出声音,唯一的办法是把Multimedia Class Scheduler何windows auto解除关联,方法如下:
开始–运行-regedit,展开[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Audiosrv]双击打开右侧的DependOnService项目,把MMCSS删除(千万别删到其他的),保存。
重启电脑后设置才会生效,然后到服务里关闭并禁用Multimedia Class Scheduler。

中文名: U盘装机
英文名: Windows VISTA SP2 & Windows 7
别名: CD
版本: Twelve
发行时间: 2009年12月17日
制作发行: wangzhi508
地区: 大陆
语言: 简体中文
简介:
IPB Image

开机就作种至晚上23:00除了停电、断网和宕机。

电驴 v1.1.11正式版
You have a lowid. Please review your network config and/or your settings.
希望有 HighID 的朋友留源

http://msdn.microsoft.com/zh-cn/subscripti…v=36:350

U盘在手 装机搞定

1. Windows7-USB-DVD-Download-Tool-Installer-en-US.exe 工具的功能是将系统安装程序做到U盘上,然后通过U盘启动来安装系统,是微软针对于上网本等无光驱的机器用于系统安装开发的工具,虽然是用于Windows 7的,但它同样也适用于Windows VISTA SP2。

2. 一个U盘搞定系统:首先安装Windows7-USB-DVD-Download-Tool-Installer-en-US.exe,用 Windows7-USB-DVD-Download-Tool-Installer-en-US 将 Windows 7 或 Windows Vista SP2 做到U盘上,然后再往U盘上拷贝点装机常用软件,一切就OK了。

3.前提是你得有一个超过2G的U盘,最好是8G的。推荐 Netac U210,支持双启动,有写保护开关,金属外壳。
IPB Image

4.cn_windows_vista_with_sp2_x86_dvd_x15-36285 安装序列号:YFKBB-PQJJV-G996G-VWGXY-2V3X8 (Ultimate) 用 vista自动激活工具6.exe 或者 SoftMod2.exe 激活。

5.cn_windows_7_ultimate_x86_dvd_x15-65907 安装时不需要输入序列号,装好后用 Windows7Loader_v3.27.exe 激活就行了。

6.Windows VISTA SP2 或 Windows 7 的U盘系统安装盘具体制作过程请查看下边的图片

IPB Image
IPB Image
IPB Image
IPB Image
IPB Image
IPB Image
IPB Image
IPB Image
IPB Image
IPB Image

在 XP,Vista 上为了给C盘节约空间,通常安装字体时我们采用安装字体快捷方式的方法:

XP,Vista 上安装字体快捷方式的方法
(图片来自 Lei

Windows 7 上安装字体快捷方式的方法稍有改变:

  1. 在控制面板打开 Fonts(字体), 或者 Win + R,输入 fonts  回车,即可打开 Fonts(字体)文件夹;
  2. 点击左侧的“Font Settings” ,打开字体设置窗口;
    打开 Windows7 的 fonts settings - 任平生@Rpsh.net
  3. 在“Allow fonts to be installed using a shortcut” (允许使用快捷方式安装字体)前面打勾;
  4. 点击“OK” 完成设置。
  5. 安装字体快捷方式的方法:(字体安装可能需要相应的管理员权限)
    • 双击打开你要安装的字体,勾选“Use shortcut”,然后点击 Install 即可;
      在 Windows7 上安装字体快捷方式:勾选“use shortcut”
    • 也可以右击要安装的字体文件,选择 “Install as link”;
      在 Windows7 上安装字体快捷方式:右击,选择“Install as link”
    • 同时安装多个字体的方法:选择你要安装的多个字体(比如全选,Ctrl+A),右击,选择“Install as link”即可。

注意:在 Windows 7 中字体安装取消了确认对话框,所以点击“Install” 后,你可能感觉不到变化。如果想确认是否安装成功(一般不会失败),你可以任意打开一个可以文字编辑程序,比如 Word ,在字体下拉选项中看看能否发现刚安装的字体。

由于我目前的空间支持.htaccess,这篇文章很全面的介绍了.htaccess的功能以及.htaccess写法,同时里面也讲了关于url_rewrite的东西,于是转过来,觉得挺有用处的

- .htaccess 文件(或者”分布式配置文件”提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

- 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

- .htaccess必须以ASCII模式上传,最好将其权限设置为644。

错误文档的定位

常用的客户端请求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type
常见的服务器错误返回代码:
500 Internal Server Error

用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下,人们可以专门设立一个目录,例如errors放置这些页面。然后再.htaccess中,加入如下的指令:

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

一条指令一行。上述第一条指令的意思是对于404,也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为:

ErrorDocument 错误代码 /目录名/文件名.扩展名

如果所需要提示的信息很少的话,不必专门制作页面,直接在指令中使用HTML号了,例如下面这个例子:

ErrorDocument 401 “<body bgcolor=#ffffff><h1>你没有权限访问该页面,请放弃!</h1></body>”

文档访问的密码保护

要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。

有了授权用户文档,可以在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的服务器目录
AuthGroupFile /dev/null (需要授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)

require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user)

注,括号部分为学习时候自己添加的注释

拒绝来自某个IP的访问

如果我不想某个政府部门访问到我的站点的内容,那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。

例如:

order allow,deny
deny from 210.21.112.43
deny from 219.146.95
allow from all

第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.146.95.0~219.146.95.255

想要拒绝所有人?用deny from all好了。不止用IP,也可以用域名来设定。

保护.htaccess文档

在使用.htaccess来设置目录的密码保护时,它包含了密码文件的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的内容。虽然可以用其他方式做到这点,比如文档的权限。不过,.htaccess本身也能做到,只需加入如下的指令:

<Files .htaccess>
order allow,deny
deny from all
</Files>

URL转向

我们可能对网站进行重新规划,将文档进行了迁移,或者更改了目录。这时候,来自搜索引擎或者其他网站链接过来的访问就可能出错。这种情况下,可以通过如下指令来完成旧的URL自动转向到新的地址:

Redirect /旧目录/旧文档名 新文档的地址

或者整个目录的转向:

Redirect 旧目录 新目录

改变缺省的首页文件

一般情况下缺省的首页文件名有default、index等。不过,有些时候目录中没有缺省文件,而是某个特定的文件名,比如在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名:

DirectoryIndex 新的缺省文件名

也可以列出多个,顺序表明它们之间的优先级别,例如:

DirectoryIndex filename.html index.cgi index.pl default.htm

防止盗链

如果不喜欢别人在他们的网页上连接自己的图片、文档的话,也可以通过htaccess的指令来做到。

所需要的指令如下:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www.)?phpv.net/.*$ [NC]
RewriteRule .(gif|jpg)$ – [F]

如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:

RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ http://www.phpv.net/img_PageNotFound.gif [R,L]

apache限制并发数,IP,带宽设置

//
//
apache限制并发数,,带宽设置
限制并发数
下载模块:到官方网址: http://www.nowhere-land.org/programs/mod_vhost_limit/下载模块

http://www.nowhere-land.org/programs/mod_vhost_limit/mod_vhost_limit-0.4.tar.gz

安装:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so

在 httpd.conf 加入:

LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c

配置:

MaxClients 150
ExtendedStatus On

NameVirtualHost *
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30
ServerName server3
DocumentRoot /some/where/3

其中: server1 被限制为 100 个并发线程数。 server2 被限制为 30 个并发线程数。 server3 没有被限制。

注:需 mod_status 的 ExtendedStatus On 支持!!

如超出限制的在客户端就会出现503错误

———————————————————————————————-

限制IP连接数

到这里下载模块 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz

安装:
tar zxvf mod_limitipconn-0.04.tar.gz
cd mod_limitipconn-0.04
make APXS=/usr/local/apache/bin/apxs ß—–这里要按你自己的路径设置
make install APXS=/usr/local/apache/bin/apxs ß—–这里要按你自己的路径设置

编辑httpd.conf
添加
全局变量:
< IfModule mod_limitipconn.c >
< Location / > # 所有虚拟主机的/目录
MaxConnPerIP 3 # 每IP只允许3个并发连接
NoIPLimit image/* # 对图片不做IP限制
< /Location >

< Location /mp3 > # 所有主机的/mp3目录
MaxConnPerIP 1 # 每IP只允许一个连接请求
OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
< /Location >
< /IfModule >

或者虚拟主机的:
< VirtualHost xx.xxx.xx.xx > ## 地址
ServerAdmin easy@phpv.net
DocumentRoot /home/easy
ServerName www.phpv.net
< IfModule mod_limitipconn.c >
< Location / >
MaxConnPerIP 5
NoIPLimit image/*
< /Location >
< Location /mp3 > # 所有主机的/mp3目录
MaxConnPerIP 2 # 每IP只允许一个连接请求
OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
< /Location >
< /IfModule >
< /VirtualHost >

———————————————————————————————-

限制带宽:

下载模块 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
安装:
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so

<——-以上/usr/local/apache请设置为你的路径

编辑httpd.conf
添加:
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c

重启你的apache

相关文档:

Global configuration directives :

BandWidthDataDir
Syntax : BandWidthDataDir
Default : “/tmp/apachebw”
Context : server config
Sets the name of the root directory used by mod_bandwidth to store its internal temporary information. Don’t forget to create the needed directories : /master and /link

BandWidthModule
Syntax : BandWidthModule

12月 17th, 2009

Apache Rewrite 规则详解

Apache Rewrite 规则详解

作者:申

在开篇之前:
我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的。需要原文的可以在谷歌上搜索一下”Apache Rewrite 规则详解”
好在我对正则表达式有所了解,把原文的代码都通过自己的理解改写了一下,并都能够达到题设的要求,并联想需求添加了例子。
本文是经过我实验后修改有效的,如果还是出现500错误请去掉 # 及后面的注释(也许有些环境不支持中文注解),如果还是错误请在下面给我留言。

1、Rewrite规则简介:

Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。

基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。

基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明RewriteEngine on。

2、举例说明:

例一.下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.kiya.cn和70.40.213.183都跳转到主机前缀为http://www.kiya.cn,避免相同内容的网页有多个指向的域名,如http://kiya.cn。

NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot “/web”
ServerName kiya.cn

RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.kiya.cn [NC] #声明Client请求的主机中前缀不是www.kiya.cn,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明Client请求的主机中前缀不是70.40.213.183,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空
RewriteRule ^(.*) http://www.kiya.cn/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.kiya.cn/,[L]意味着立即停止重写操作,并 不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的 (.*)字符。

例二.将输入 en.sicasoft.com 的域名时跳转到www.sicasoft.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.sicasoft.com [NC]
RewriteRule ^(.*) http://www.sicasoft.com/ [L]

例三.赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http: //ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到 www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]

3.Apache mod_rewrite规则重写的标志一览

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) 与下一条规则关联

如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。

8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量

4.Apache rewrite例子集合

URL重定向

例子一:
同时达到下面两个要求:
1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.zzz.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.zzz.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1

例子二:

/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html

RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]

5.使用Apache的URL Rewrite配置多用户虚拟服务器

要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.kiya.us和 *.kiya.cn全部解析到了我的IP地址70.40.213.183上。

然后,看一下我的Apache中关于*.kiya.us的虚拟主机的设定。

ServerAdmin webmaster@kiya.us
DocumentRoot /home/www/www.kiya.us
ServerName dns.kiya.us
ServerAlias dns.kiya.us kiya.us *.kiya.us
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
AllowOverride None
Order deny,allow

#AddDefaultCharset GB2312

RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/www.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]

在这段设定中,我把*.kiya.cn和*.kiya.us 的Document Root都设定到了 /home/www/www.kiya.us

继续看下去,在这里我就配置了URL Rewrite规则。

RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.kiya.us 或者 xxxx.kiya.cn 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
# 最关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给/home/www/dev.kiya.us 目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则([L]规则)。注意,在这一句中指明的重写后的地址用的是服务器上 的绝对路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着的浏览器中的URL地址会改变 成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。

设置后重启Apache服务器就大功告成了!

Update May 1, 2009

今天上网看到了有人提一个问题:

求Rewrite 防盗链正则
不允许www.im286.com www.chinaz.com 这两个网站盗链 , 其它的网站都可以盗链的规则怎么写.

论坛中的答案是:

RewriteEngine On
RewriteCond %{HTTP_REFERER} chinaz.com [NC]
RewriteCond %{HTTP_REFERER} im286.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$ http://www.xxx.com/fuck.png [R,NC,L]

Update May 7, 2009

介绍一篇文章:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

Update May 24, 2009

一、关于是否需要使用完全转义,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中 把 chinaz.com 改成 chinaz\.com
答案是,两者都是可以的。

二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的变形)的时候,在 GoDaddy 主机上无法正常转向,后来找到了问题:
在HostMonster以及我自己的机器上,是用
RewriteRule ^business/([^\.]+)$ biz/detail.php?name=$1 [L]
达到改写的。而在Godaddy主机上,是这样:
RewriteRule ^business/([^\.]+)$ /biz/detail.php?name=$1 [L]
目标文件前多了一个/
现在想想,可能是因为没有指定RewriteBase,至于到底是不是我改日再验证一下。

三、添加两个关于判断 USER AGENT 例子和自动添加.php扩展名及自动换.html到.php扩展名的例子:
1

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。

2

RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule>

Update Jun 10, 2009

补充,关于特定文件扩展名的重写。

重写有某些扩展名的文件:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
如果要排除一些扩展名:
RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php

12月 17th, 2009

apache的返回代码

最近对apache设置的改动是的log文件里面有很多没有见到过的返回代码,例如 200 206 等。所以在网上找了一下代码的意思。 请看全文
出处:由彩信MM7协议引起的对HTTP和SOAP协议的研究

当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:
① 客户方错误
100  继续
101  交换协议
② 成功
200  OK
201  已创建
202  接收
203  非认证信息
204  无内容
205  重置内容
206  部分内容
③ 重定向
300  多路选择
301  永久转移
302  暂时转移
303  参见其它
304  未修改(Not Modified)
305  使用代理
④ 客户方错误
400  错误请求(Bad Request)
401  未认证
402  需要付费
403  禁止(Forbidden)
404  未找到(Not Found)
405  方法不允许
406  不接受
407  需要代理认证
408  请求超时
409  冲突
410  失败
411  需要长度
412  条件失败
413  请求实体太大
414  请求URI太长
415  不支持媒体类型
⑤ 服务器错误
500  服务器内部错误
501  未实现(Not Implemented)
502  网关失败
504  网关超时
505 HTTP版本不支持

12月 17th, 2009

Apache 重定向配置方法

今天的support内容需要测试Apache 页面重定向,简单的说就是配置Apache让它自动把旧的URL地址转换成新的URL输出。

  • 首先,apache重定向功能需要调用mod_rewrite模块,由于apache2.2的modules文件夹中带有该模块,所以我们只需开启http.conf文件中的LoadModule rewrite_module modules/mod_rewrite.so(去掉前面的‘#’就可以了)。

Apache模块 mod_rewrite说明

说明: 提供了一个基于规则的实时转向URL请求的引擎
状态: Extension
模块名: rewrite_module
源文件: mod_rewrite.c
兼容性: 包含在Apache 1.3及其更新版本中
  • 修改http.conf文件,追加以下代码:
#开启Rewrite模块
RewriteEngine on
#设置Log的输出位置()
RewriteLog
F:/local/apache2.2/logs/rewrite.log

#举例:替换page.jsp?id
=
30800为新地址http://localhost/webadmin/index.jsp
RewriteCond %{QUERY_STRING} ^id
=30800
$
RewriteRule ^/page.jsp$ http://localhost/webadmin/index.jsp
[L]

常用指令:

  • RewriteBase

语法:RewriteBase URL-path

RewriteBase指令显式地设置了目录级重写的基准URL。默认值是,RewriteBase physical-directory-path在对一个新的URL进行替换时,此模块必须把这个URL重新注入到服务器处理中。 为此,它必须知道其对应的URL前缀或者说URL基准。通常,此前缀就是对应的文件路径。 但是,大多数网站URL不是直接对应于其物理文件路径的,因而一般不能做这样的假定! 所以在这种情况下,就必须用RewriteBase指令来指定正确的URL前缀。

RewriteEngine On

#  let the server know that we were reached via /xyz and not
#  via the physical path prefix /abc/def
RewriteBase   /xyz

语法:RewriteCond TestString CondPattern

RewriteCond指令定义了一个规则的条件,即,在一个RewriteRule指令之前有一个或多个RewriteCond指令。 条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。

TestString是一个纯文本的字符串,但是还可以包含下列可扩展的成分。CondPattern是条件pattern, , 一个应用于当前实例TestString的正则表达式, , TestString将会被计算然后与CondPattern匹配.

RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
RewriteRule  ^/$                 /homepage.max.html
[L]

RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  ^/$                 /homepage.min.html
[L]

RewriteRule  ^/$                 /homepage.std.html
[L]

语法:RewriteEngine on|off

RewriteEngine指令打开或关闭运行时刻的重写引擎。 如果设置为off,则此模块不执行任何运行时刻的重写操作, 甚至也不更新SCRIPT_URx环境变量。使用该指令可以使此模块无效,而无须注释所有的RewriteRule指令!

注意:默认情况下,重写配置是不可继承的, 即,必须在每个需要的虚拟主机中设置一个RewriteEngine on指令。

语法:RewriteLog file-path

RewriteLog指令设置用于记录所有重写操作的文件的名称。 如果此文件名不是以斜杠(’/‘)开头,则它是相对于Server Root的。 此指令应该仅仅出现在服务器级配置中。

如果要关闭对重写操作的记录,不推荐把Filename设置为/dev/null, 因为,虽然重写引擎不能输出记录了,但仍会内部地建立这个日志文件, 它会使服务器速度降低,而且对管理员毫无益处! 要关闭日志,可以删除或注解RewriteLog指令, 或者使用RewriteLogLevel 0!
RewriteLog /usr/local/var/apache/logs/rewrite.log

语法:RewriteLogLevel Level

RewriteLogLevel指令设置重写引擎日志的详细程度的级别。 默认级别0意味着不记录,而9或更大的值意味着记录所有的操作。

要关闭重写引擎日志,可以简单地设此值为0,关闭所有的重写操作记录。使用较高的Level值会使Apache服务器速度急剧下降! 重写日志使用大于2的Level值只用于调试!

RewriteLogLevel 3

语法:RewriteRule Pattern Substitution

RewriteRule指令是重写引擎的根本。此指令可以多次使用。 每个指令定义一个简单的重写规则。这些规则的定义顺序尤为重要, 因为,在运行时刻,规则是按这个顺序逐一生效的.

Pattern是一个作用于当前URL的兼容perl的正则表达式. 这里的“当前”是指该规则生效时的URL的值。 它可能与被请求的URL不同,因为其他规则可能在此之前已经发生匹配并对它做了改动。

[flags]

  • 'redirect|R [=code]' (强制重定向 redirect)
    http://thishost[:thisport]/(使新的URL成为一个URI) 为前缀的Substitution可以强制性执行一个外部重定向。 如果code没有指定,则产生一个HTTP响应代码302(临时性移动)。 如果需要使用在300-400范围内的其他响应代码,只需在此指定这个数值即可, 另外,还可以使用下列符号名称之一: temp (默认的), permanent, seeother. 用它可以把规范化的URL反馈给客户端,, 重写``/~''为 ``/u/'',或对/u/user加上斜杠,等等。
    注意: 在使用这个标记时,必须确保该替换字段是一个有效的URL! 否则,它会指向一个无效的位置! 并且要记住,此标记本身只是对URL加上 http://thishost[:thisport]/的前缀,重写操作仍然会继续。 通常,你会希望停止重写操作而立即重定向,则还需要使用'L'标记.
  • 'forbidden|F' (强制URL为被禁止的 forbidden)
    强制当前URL为被禁止的,,立即反馈一个HTTP响应代码403(被禁止的)。 使用这个标记,可以链接若干RewriteConds以有条件地阻塞某些URL。
  • 'gone|G' (强制URL为已废弃的 gone)
    强制当前URL为已废弃的,,立即反馈一个HTTP响应代码410(已废弃的)。 使用这个标记,可以标明页面已经被废弃而不存在了.
  • 'proxy|P' (强制为代理 proxy)
    此标记使替换成分被内部地强制为代理请求,并立即(, 重写规则处理立即中断)把处理移交给代理模块。 你必须确保此替换串是一个有效的(比如常见的以 http://hostname开头的)能够为Apache代理模块所处理的URI。 使用这个标记,可以把某些远程成分映射到本地服务器名称空间, 从而增强了ProxyPass指令的功能。注意: 要使用这个功能,代理模块必须编译在Apache服务器中。 如果你不能确定,可以检查``httpd -l''的输出中是否有mod_proxy.c。 如果有,则mod_rewrite可以使用这个功能; 如果没有,则必须启用mod_proxy并重新编译``httpd''程序。
  • 'last|L' (最后一个规则 last)
    立即停止重写操作,并不再应用其他重写规则。 它对应于Perl中的last命令或C语言中的break命令。 这个标记可以阻止当前已被重写的URL为其后继的规则所重写。 举例,使用它可以重写根路径的URL('/')为实际存在的URL, 比如, '/e/www/'.
  • 'next|N' (重新执行 next round)
    重新执行重写操作(从第一个规则重新开始). 这时再次进行处理的URL已经不是原始的URL了,而是经最后一个重写规则处理的URL。 它对应于Perl中的next命令或C语言中的continue命令。 此标记可以重新开始重写操作,, 立即回到循环的头部。
    但是要小心,不要制造死循环!
  • 'chain|C' (与下一个规则相链接 chained)
    此标记使当前规则与下一个(其本身又可以与其后继规则相链接的, 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配,通常会继续处理其后继规则, ,这个标记不起作用;如果规则不能被匹配, 则其后继的链接的规则会被忽略。比如,在执行一个外部重定向时, 对一个目录级规则集,你可能需要删除``.www'' (此处不应该出现``.www''的)。
  • 'type|T=MIME-type' (强制MIME类型 type)
    强制目标文件的MIME类型为MIME-type。 比如,它可以用于模拟mod_alias中的ScriptAlias指令, 以内部地强制被映射目录中的所有文件的MIME类型为``application/x-httpd-cgi''.
  • 'nosubreq|NS' (仅用于不对内部子请求进行处理 no internal sub-request)
    在当前请求是一个内部子请求时,此标记强制重写引擎跳过该重写规则。 比如,在mod_include试图搜索可能的目录默认文件(index.xxx)时, Apache会内部地产生子请求。对子请求,它不一定有用的,而且如果整个规则集都起作用, 它甚至可能会引发错误。所以,可以用这个标记来排除某些规则。
    根据你的需要遵循以下原则: 如果你使用了有CGI脚本的URL前缀,以强制它们由CGI脚本处理, 而对子请求处理的出错率(或者开销)很高,在这种情况下,可以使用这个标记。
  • 'nocase|NC' (忽略大小写 no case)
    它使Pattern忽略大小写,, 在Pattern与当前URL匹配时,'A-Z' 和'a-z'没有区别。
  • 'qsappend|QSA' (追加请求串 query string append)
    此标记强制重写引擎在已有的替换串中追加一个请求串,而不是简单的替换。 如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。
  • 'noescape|NE' (在输出中不对URI作转义 no URI escaping)
    此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下,特殊字符(如'%', '$', ';'等)会被转义为等值的十六进制编码。 此标记可以阻止这样的转义,以允许百分号等符号出现在输出中,如:

    RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]

    可以使'/foo/zed'转向到一个安全的请求'/bar?arg=P1=zed'.

  • 'passthrough|PT' (移交给下一个处理器 pass through)
    此标记强制重写引擎将内部结构request_rec中的uri字段设置为 filename字段的值,它只是一个小修改,使之能对来自其他URI到文件名翻译器的 AliasScriptAlias, Redirect 指令的输出进行后续处理。举一个能说明其含义的例子: 如果要通过mod_rewrite的重写引擎重写/abc/def, 然后通过mod_alias使/def转变为/ghi,可以这样:

    RewriteRule ^/abc(.*) /def$1 [PT]
    Alias /def /ghi

    如果省略了PT标记,虽然mod_rewrite运作正常, , 作为一个使用API的URI到文件名翻译器, 它可以重写uri=/abc/...filename=/def/..., 但是,后续的mod_alias在试图作URI到文件名的翻译时,则会失效。注意: 如果需要混合使用不同的包含URI到文件名翻译器的模块时, 就必须使用这个标记。。 混合使用mod_aliasmod_rewrite就是个典型的例子。

    For Apache hackers

    如果当前Apache API除了URI到文件名hook之外,还有一个文件名到文件名的hook, 就不需要这个标记了! 但是,如果没有这样一个hook,则此标记是唯一的解决方案。 Apache Group讨论过这个问题,并在Apache 2.0 版本中会增加这样一个hook。

  • 'skip|S=num' (跳过后继的规则 skip)
    此标记强制重写引擎跳过当前匹配规则后继的num个规则。 它可以实现一个伪if-then-else的构造: 最后一个规则是then从句,而被跳过的skip=N个规则是else从句. (它和'chain|C'标记是不同的!)
  • 'env|E=VAR:VAL' (设置环境变量 environment variable)
    此标记使环境变量VAR的值为VAL, VAL可以包含可扩展的反向引用的正则表达式$N%N。 此标记可以多次使用以设置多个变量。 这些变量可以在其后许多情况下被间接引用,但通常是在XSSI (via <!--#echo var="VAR"-->) or CGI ( $ENV{'VAR'})中, 也可以在后继的RewriteCond指令的pattern中通过%{ENV:VAR}作引用。 使用它可以从URL中剥离并记住一些信息。
  • 'cookie|CO=NAME:VAL:domain[:lifetime[:path]]' (设置cookie)
    它在客户端浏览器上设置一个cookie。 cookie的名称是NAME,其值是VALdomain字段是该cookie的域,比如'.apache.org', 可选的lifetime是cookie生命期的分钟数, 可选的path是cookie的路径。

众所周知,CSS2的min-height,max-height,min-width,max-width样式IE6并不支持,但是却很有用的几个样式,可以减少用程序来做判断,省时又省心呀.
幸好FF和IE7到时都支持,这样就只要对IE6做hack就可以了,这样一来,就可以都支持了,好用的样式就要灵活运用嘛,哈哈

.left_ads{height:auto !important;height:350px;max-height:350px;overflow:hidden;}