2017-02-28 10 views
0

私はdbm値に作用するRewriteRuleを書いています。私は、ユーザーIDとホームディレクトリのパスまたはURLを含むdbmファイルを持っています。 http://www.domain.com/~useridはユーザIDを検索し、/ home/useridのようなホームディレクトリか、http://www.userid.comのようなURLを返します。ホームディレクトリが返されると、コンテンツが表示されます。 URLが返された場合は、クライアントのリダイレクトを希望します。 Apacheの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] 
関連する問題