日期:2014-05-17  浏览次数:20740 次

Apache的Mod_rewrite 例子(转)

转自dreamwaver的博客([url]http://dreamwaver.bokee.com/5692845.html[/url])

目标 重写设置 说明
规范化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 ^/(.*) [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_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/..