通过htaccess进行子域屏蔽

时间:2011-09-28 18:42:48

标签: .htaccess mod-rewrite

EDITED

我在服务器上设置了一个通配符子域dns区域,并希望每个子域使用.htaccess和mod-rewrite加载/ users / direcotry的内容。

我希望网址在浏览器栏中保持不变,以便显示:

http://username.domian.com/../../

同时显示以下内容:

http://www.domain.com/users/username/../../

此外,如果访问URL的www版本,我想重定向(更改URL)到子域版本。

我不太熟悉mod重写规则,非常感谢任何帮助!

谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteCond %1 !=www
RewriteRule ^(.*)$ http://www.domain.com/users/%1/$1 [R=302,L]

如果用户访问tom.domain.com/directory1/directory2/directory3/file.html,他将被重定向(网址将在浏览器中更改为)www.domain.com/users/tom/directory1/directory2/directory3/file.html

如果那不是你真正想要的(因为我对你的这个“蒙面”概念有点困惑)那么请更好地解释你的要求,以便我可以调整规则。


<强>更新 要在浏览器中保持URL不变:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/users/
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteCond %1 !=www
RewriteRule ^(.*)$ /users/%1/$1 [L]

但是有一个问题:如果directory1将被称为users(例如tom.domain.com/users/directory2/directory3/file.html),那么这将无效 - 这就是你的价格有重写费用。 解决方案:将users重命名为独特的内容(例如users_dir_123_abc等 - www.domain.com/users_dir_123_abc/tom/users/directory2/directory3/file.html)。