具有通配符映射.htaccess的虚拟子域

时间:2012-02-14 18:13:38

标签: .htaccess virtual

我正在构建一个下载站点,用户将能够注册,并且将在我的服务器上创建一个带有用户名的文件夹,例如:home/users/username

我想要实现的目标是,如果有人在浏览器中输入username.domain.com,它会将它们发送到:home/users/username/,如果他们输入:username.domain.com/file.mp3,它会路由它们致:home/users/username/file.mp3

如果它可以完成子文件夹路由,那将是非常充分的,例如; home/users/username/sub/file.mp3

谢谢你们

2 个答案:

答案 0 :(得分:2)

尝试将以下内容添加到站点根目录中的.htaccess文件中。

这会将对username.domain.com的任何请求重写为正确的文件夹/子文件夹和文件。

我假设home是您网站根文件夹中的目录。

RewriteEngine on
RewriteBase / 

#if request for usename.domain.com/anything
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC] 
#send any request that is not already for home/users to home/users/username/anything
RewriteRule ^(?!home/users/) home/users/%1%{REQUEST_URI} [L,NC] 

答案 1 :(得分:0)

我尝试了Ulrich Palha推荐但没有运气。我希望这会帮助像我这样的人,Ulrich的答案不起作用。

# Rewrite username.domain.com/<path> to domain.com/home/username/<path>
#
# Rewrite only if not already rewritten to /home/
RewriteCond $1 !home/
# Skip rewrite if subdomain is www
RewriteCond %{HTTP_HOST} !^www\. [NC]
# Extract (required) subdomain to %1
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$
# Rewrite to /home/username/URL-path
RewriteRule (.*) /home/%1/$1 [L]