首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

Apache的Mod_rewrite 例证(转)

2012-07-03 
Apache的Mod_rewrite 例子(转)转自dreamwaver的博客([url]http://dreamwaver.bokee.com/5692845.html[/url

Apache的Mod_rewrite 例子(转)

转自dreamwaver的博客([url]http://dreamwaver.bokee.com/5692845.html[/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 ^/(.*) [url]http://fully.qualified.domain.name:%[/url]{SERVER_PORT}/$1 [L,R]重写?RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]??RewriteCond %{HTTP_HOST} !^$??RewriteRule ^/(.*) [url]http://fully.qualified.domain.name/$1[/url] [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/([^/]+)/?(.*) [url]http://$[/url]{user-to-host:$1|server0}/u/$1/$2用户均衡?RewriteRule ^/g/([^/]+)/?(.*) [url]http://$[/url]{group-to-host:$1|server0}/g/$1/$2组均衡?RewriteRule ^/e/([^/]+)/?(.*) [url]http://$[/url]{entity-to-host:$1|server0}/e/$1/$2实体均衡?RewriteRule ^/([uge])/([^/]+)/?$ /$1/$2/.www/??RewriteRule ^/([uge])/([^/]+)/([^.]+.+) /$1/$2/.www/$3\ ????URL根目录搬迁RewriteEngine on??RewriteRule ^/~(.+) [url]http://newserver/~$1[/url] [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 ScriptAlias 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 ^(/~.+) [url]http://www.somewhere.com/$1[/url] [R,L] ????错误重定向RewriteEngine on??RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f不是regular文件?RewriteRule ^(.+) [url]http://webserverB.dom/$1[/url] ????程序处理特殊协议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} <1900??RewriteRule ^foo\.html$ foo.day.html白天为早晚7点间?RewriteRule ^foo\.html$ foo.night.html 其余为夜间???向前兼容扩展名RewriteEngine on??RewriteBase /~quux/??# parse out basename, but remember the fact??RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes]??# rewrite to document.phtml if exists??RewriteCond %{REQUEST_FILENAME}.phtml -f如果存在$1.phtml则重写?RewriteRule ^(.*)$ $1.phtml [S=1]??# else reverse the previous basename cutout??RewriteCond %{ENV:WasHTML} ^yes$如果不存在$1.phtml,则保持不变?RewriteRule ^(.*)$ $1.html ????文件改名(目录级)RewriteEngine on内部重写?RewriteBase /~quux/??RewriteRule ^foo\.html$ bar.html ?????RewriteEngine on重定向由客户端再次提交?RewriteBase /~quux/??RewriteRule ^foo\.html$ bar.html [R] ????据浏览器类型重写RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*??RewriteRule ^foo\.html$ foo.NS.html [L]??RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]??RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*??RewriteRule ^foo\.html$ foo.20.html [L]??RewriteRule ^foo\.html$ foo.32.html [L] ????动态镜像远程资源RewriteEngine on??RewriteBase /~quux/??RewriteRule ^hotsheet/(.*)$ [url]http://www.tstimpreso.com/hotsheet/$1[/url] [P]利用了代理模块????RewriteEngine on??RewriteBase /~quux/??RewriteRule ^usa-news\.html$ [url]http://www.quux-corp.com/news/index.html[/url] [P]????反向动态镜像RewriteEngine on??RewriteCond /mirror/of/remotesite/$1 -U ??RewriteRule ^[url]http://www[/url]\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1 ????负载均衡RewriteEngine on利用代理实现round-robin效果?RewriteMap lb prg:/path/to/lb.pl??RewriteRule ^/(.+)$ ${lb:$1} [P,L]?????#!/path/to/perl??$| = 1;??$name = "www"; # the hostname base??$first = 1; # the first server (not 0 here, because 0 is myself) ??$last = 5; # the last server in the round-robin??$domain = "foo.dom"; # the domainname??$cnt = 0;??while (<STDIN>) {??$cnt = (($cnt+1) % ($last+1-$first));??$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);??print "http://$server/$_";??}??##EOF##????静态页面变脚本RewriteEngine on??RewriteBase /~quux/??RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi] ????阻击机器人RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.* ??RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.[8-9]$??RewriteRule ^/~quux/foo/arc/.+ - [F] ????阻止盗连你的图片RewriteCond %{HTTP_REFERER} !^$ ??RewriteCond %{HTTP_REFERER} !^[url]http://www.quux-corp.de/~quux/.[/url]*$ [NC]自己的连接可不能被阻止?RewriteRule .*\.gif$ - [F]?????RewriteCond %{HTTP_REFERER} !^$ ??RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$??RewriteRule ^inlined-in-foo\.gif$ - [F]????拒绝某些主机访问RewriteEngine on??RewriteMap hosts-deny txt:/path/to/hosts.deny??RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]??RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND??RewriteRule ^/.* - [F] ????用户授权RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend1@client1.quux-corp\.com$ ??RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend2@client2.quux-corp\.com$ ??RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend3@client3.quux-corp\.com$ ??RewriteRule ^/~quux/only-for-friends/ - [F] ????外部重写程序模板RewriteEngine on??RewriteMap quux-map prg:/path/to/map.quux.pl??RewriteRule ^/~quux/(.*)$ /~quux/${quux-map:$1}?????#!/path/to/perl??$| = 1;??while (<>) {??s|^foo/|bar/|;??print $_;??}????搜索引擎友好RewriteRule ^/products$ /content.php ??RewriteRule ^/products/([0-9]+)$ /content.php?id=$1 ??RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$) /marso/content.php?id=$1&sort=$2&order=$3&start=$4

热点排行