EDITED
我在服务器上设置了一个通配符子域dns区域,并希望每个子域使用.htaccess和mod-rewrite加载/ users / direcotry的内容。
我希望网址在浏览器栏中保持不变,以便显示:
http://username.domian.com/../../
同时显示以下内容:
http://www.domain.com/users/username/../../
此外,如果访问URL的www版本,我想重定向(更改URL)到子域版本。
我不太熟悉mod重写规则,非常感谢任何帮助!
谢谢。
答案 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
)。