|
用rewrite可实现的部分:URL根目录搬迁,多目录查找资源,阻止盗连你的图片,拒绝某些主机访问,基于时间重写,据浏览器类型重写,动态镜像远程资源,外部重写程序模板,等等
详见下表:
目标重写设置说明规范化URLRewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]将/~user重写为/u/user的形式 RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]将/u/user末尾漏掉的/补上 规范化HostNameRewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]域名不合格 RewriteCond %{HTTP_HOST} !^$不空 RewriteCond %{SERVER_PORT} !^80$不是80端口 RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]重写 RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R] URL根目录转移RewriteEngine on RewriteRule ^/$ /e/www/ [R]从/移到/e/www/ 末尾目录补斜线RewriteEngine on (目录范围内)RewriteBase /~quux/ RewriteRule ^foo$ foo/ [R]/~quux/foo是一个目录,补/ RewriteEngine on RewriteBase /~quux/ RewriteCond %{REQUEST_FILENAME} -d如果请文件名是个目录 RewriteRule ^(.+[^/])$ $1/ [R]URL末尾不是斜线时补上 Web集群RewriteEngine on RewriteMap user-to-host txt:/path/to/map.user-to-host用户-服务器映射 RewriteMap group-to-host txt:/path/to/map.group-to-host组-服务器映射 RewriteMap entity-to-host txt:/path/to/map.entity-to-host实体-服务器映射 RewriteRule ^/u/([^/]+)/?(.*) http://${user-to-host:$1|server0}/u/$1/$2用户均衡 RewriteRule ^/g/([^/]+)/?(.*) http://${group-to-host:$1|server0}/g/$1/$2组均衡 RewriteRule ^/e/([^/]+)/?(.*) http://${entity-to-host:$1|server0}/e/$1/$2实体均衡 RewriteRule ^/([uge])/([^/]+)/?$ /$1/$2/.www/ RewriteRule ^/([uge])/([^/]+)/([^.]+.+) /$1/$2/.www/$3\ URL根目录搬迁RewriteEngine on RewriteRule ^/~(.+) http://newserver/~$1 [R,L]到其它服务器 所用户名首字母分RewriteEngine on RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3内一层括号为$2 NCSA imagemap移RewriteEngine on 植为mod_imapRewriteRule ^/cgi-bin/imagemap(.*) $1 [PT] 多目录查找资源RewriteEngine on # first try to find it in custom/… RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f RewriteRule ^(.+) /your/docroot/dir1/$1 [L] # second try to find it in pub/… RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f RewriteRule ^(.+) /your/docroot/dir2/$1 [L] # else go on for other Alias or Alias directives, RewriteRule ^(.+) – [PT] 据URL设置环境变量RewriteEngine on RewriteRule ^(.*)/S=([^/]+)/(.*) $1/$3 [E=STATUS:$2] 虚拟主机RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$基于用户名 RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2 内外人有别RewriteEngine on RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$基于远程主机 RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L] 错误重定向RewriteEngine on RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f不是regular文件 RewriteRule ^(.+) http://webserverB.dom/$1 程序处理特殊协议RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \Xredirect协议 [T=application/x-httpd-cgi,L] 最近镜像下载RewriteEngine on RewriteMap multiplex txt:/path/to/map.cxan顶级域名与最近ftp服务器映射 RewriteRule ^/CxAN/(.*) %{REMOTE_HOST}::$1 [C] RewriteRule ^.+\.([a-zA-Z]+)::(.*)$ ${multiplex:$1|ftp.default.dom}$2 [R,L]据顶级域名不同提供不同的FTP服务器 基于时间重写RewriteEngine on RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700 RewriteCond %{TIME_HOUR}%{TIME_MIN} |
|
|