Apache的Mod_rewrite使用详解
来源:互联网 发布:剑灵捏脸数据图怎么用 编辑:程序博客网 时间:2024/05/01 14:02
Apache的Mod_rewrite使用详解
目标 重写设置 说明 规范化URL RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R] 将/~user重写为/u/user的形式 RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R] 将/u/user末尾漏掉的/补上 规范化HostName RewriteCond %{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_imap RewriteRule ^/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 ^(/~.+) 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} <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/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P] 利用了代理模块 RewriteEngine on RewriteBase /~quux/ RewriteRule ^usa-news/.html$ http://www.quux-corp.com/news/index.html [P] 反向动态镜像 RewriteEngine on RewriteCond /mirror/of/remotesite/$1 -U RewriteRule ^http://www/.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 () { $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} !^http://www.quux-corp.de/~quux/.*$ [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
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1439030
- Apache的Mod_rewrite使用详解
- Apache的Mod_rewrite使用详解
- Apache的Mod_rewrite使用详解
- apache-mod_rewrite详解
- Apache模块mod_rewrite详解
- apache mod_rewrite 模块使用的几个例子
- Apache的Mod_rewrite学习
- Apache的Mod_rewrite学习
- Apache的Mod_rewrite 例子
- apache的mod_rewrite总结
- Apache的Mod_rewrite学习
- Apache的Mod_rewrite学习
- 关于Apache mod_rewrite的中文配置、使用和语法介绍
- 关于Apache mod_rewrite的中文配置、使用和语法介绍
- Apache mod_rewrite 的配置教程
- Apache的Mod_Rewrite模块设置
- 深入理解Apache的mod_rewrite
- 关于Apache的mod_rewrite模块
- DIV+CSS+JS分类显示
- 西门子实习感想(7)
- web2.0理解
- 微软终向安全厂商开放Vista核心API
- 看看蜗牛是怎么过桥的[Blog synchronous]
- Apache的Mod_rewrite使用详解
- Google AdSense申请完全手册
- asp SQL server 2000 读取记录直接生成xml文档
- Page View将死?
- 40种网页常用小技巧
- 昨天、今天、明天
- 最新的Swing外观,定制UI不在话下
- 弹出窗口代码大全
- 用VFP9.0开发档案管理程序