我正在寻找一些帮助来编写一个RewriteRule,以作用于一个DBM值。我有一个包含用户I和主目录路径或url的dbm文件。http://www.domain.com/~userid将查找用户or并返回主目录(如/ home /userid )或url (如http://www.userid.com )。如果返回主目录,则显示内容。如果返回一个url,我希望客户端重定向。运行Apache2.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重定向部分遗漏一些简单的东西。任何帮助都将不胜感激。
发布于 2017-03-01 03:31:08
做了一些小的调整,它似乎是工作的。如果任何人看到任何错误或更好的方法,请让我知道。
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]https://stackoverflow.com/questions/42509872
复制相似问题