【发布时间】:2011-10-13 10:59:39
【问题描述】:
我正在使用以下代码将通配符子域 (*.domain.com) 重定向到它们在 /users 中的对应文件夹,并将直接请求重定向到 /users 文件夹到子域版本:
保护对通配符域文件夹的直接访问:
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^users/([a-z0-9\-_\.]+)/?(.*)$ http://$1.domain.com/$2 [QSA,NC,R,L]
处理通配符子域请求:
RewriteCond %{REQUEST_URI} !^/users/ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteCond %1 !=www [NC]
RewriteRule ^(.*)$ /users/%1/$1 [L]
这段代码运行良好,但有两个问题我似乎无法解决。
-
似乎会发生以下情况,因为请求 URI 上没有尾部斜杠:
username.domain.com/sub1 => username.domain.com/users/username/sub1 username.domain.com/sub1/ => username.domain.com/sub1/
-
仍然可以使用子域直接访问用户目录:
username.domain.com/users/username/sub1 => 有效,但不应该
我很茫然,如果有人有任何想法,我将不胜感激。
谢谢!
【问题讨论】:
标签: .htaccess mod-rewrite