2017-02-28 1 views
0

dbm 값을 처리하는 RewriteRule을 작성하는 데 도움이 필요합니다. 나는 사용자 ID와 홈 디렉토리 경로 또는 URL을 포함하는 dbm 파일을 가지고있다. http://www.domain.com/~userid은 userid를 검색하고/home/userid와 같은 홈 디렉토리 또는 http://www.userid.com과 같은 URL을 반환합니다. 홈 디렉토리가 반환되면 내용이 표시됩니다. URL이 반환되면 클라이언트의 리디렉션을 원합니다. 나는 다음과 같은 한 아파치 2.2을 실행 :dbm 값을 기반으로하는 mod_rewrite

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에 간단한 뭔가 빠진해야이 부분을 리디렉션합니다. 모든 도움이 크게 감사 할 것입니다.

답변

0

몇 가지 사소한 조작을했는데 작동하는 것으로 보입니다. 다른 사람이 잘못했거나 더 나은 방법을 본다면 알려 주시기 바랍니다.

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] 
관련 문제