Apache 基于dbm值的mod_重写

Apache 基于dbm值的mod_重写,apache,redirect,mod-rewrite,Apache,Redirect,Mod Rewrite,我正在寻找一些帮助来编写一个重写规则来处理dbm值。我有一个dbm文件,其中包含一个用户ID和主目录路径或url。将查找userid并返回像/home/userid这样的主目录或像这样的url。如果返回主目录,则显示内容。如果返回url,我希望客户端被重定向。在运行Apache 2.2时,我有以下几点: RewriteEngine On RewriteLog /etc/httpd/logs/rewrite_log RewriteLogLevel 4 RewriteMap homedir.dbm

我正在寻找一些帮助来编写一个重写规则来处理dbm值。我有一个dbm文件,其中包含一个用户ID和主目录路径或url。将查找userid并返回像/home/userid这样的主目录或像这样的url。如果返回主目录,则显示内容。如果返回url,我希望客户端被重定向。在运行Apache 2.2时,我有以下几点:

RewriteEngine On
RewriteLog /etc/httpd/logs/rewrite_log
RewriteLogLevel 4
RewriteMap homedir.dbm dbm:/var/www/data/homedir.dbm
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteRule ^/~([^/]+)/(.*)$                    /%1/www/$2 [L]
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteCond %1                                  !^http [NC]
RewriteRule ^/~([^/]+)$                         /~$1/ [L,R=301]
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteCond %1                                  ^http [NC]
RewriteRule ^/~([^/]+)$                         %1 [R]

主目录部分似乎在工作,但我必须错过一些简单的url重定向部分。非常感谢您提供的任何帮助。

做了一些小的调整,看起来效果不错。如果有人发现任何错误或更好的方法,请告诉我

RewriteEngine On
RewriteLog /etc/httpd/logs/rewrite_log
RewriteLogLevel 4
RewriteMap homedir.dbm dbm:/var/www/data/homedir.dbm
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteCond %1                                  !^http [NC]
RewriteRule ^/~([^/]+)/(.*)$                    /%1/www/$2 [L]
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteCond %1                                  ^http [NC]
RewriteRule ^/~([^/]+)/(.*)$                    ${homedir.dbm:$1} [L,R]
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteCond %1                                  !^http [NC]
RewriteRule ^/~([^/]+)$                         /~$1/ [L,R=301]
RewriteCond ${homedir.dbm:$1|lookupfailed}      (.*)
RewriteCond %1                                  !lookupfailed
RewriteCond %1                                  ^http [NC]
RewriteRule ^/~([^/]+)$                         ${homedir.dbm:$1} [L,R]