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

.htaccess 具有通配符映射的虚拟子域。htaccess,.htaccess,virtual,.htaccess,Virtual,我正在建立一个下载站点,用户将能够注册,并在我的服务器上创建一个带有用户名的文件夹,类似于:home/users/username 我想完成的是,如果有人在浏览器中键入:username.domain.com,它会将他们路由到:home/users/username/,如果他们键入:username.domain.com/file.mp3,它会将他们路由到:home/users/username/file.mp3 如果它有可能完成子文件夹路由,这将是伟大的充分以及,例如home/users/us

我正在建立一个下载站点,用户将能够注册,并在我的服务器上创建一个带有用户名的文件夹,类似于:
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


谢谢大家

尝试将以下内容添加到站点根目录中的
.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] 

我尝试了乌尔里希·帕哈推荐的方法,但没有成功。我希望这能帮助像我这样的家伙,因为乌尔里奇的答案不起作用

# 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]
#将username.domain.com/重写为domain.com/home/username/
#
#仅当尚未重写到/home时才重写/
1美元!家/
#如果子域为www,则跳过重写
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
#将(必需的)子域提取到%1
重写cond%{HTTP\u HOST}^([^.]+)\.domain\.com$
#重写到/home/username/URL路径
重写规则(.*)/home/%1/$1[L]

我有一个问题,每当我键入:test.domain.com/folder而不带尾随斜杠时,它会在url:test.domain.com/home/users中显示文件夹的实际路径/test@user1209681尝试在
重新编写引擎之前添加
directorysash Off
,但请参见“注意事项”完美无瑕@Ulrich Palha谢谢。还有一个问题,有没有其他方法可以不用.htaccess来实现这一点?最初,在高流量情况下,哪种方法将获得最佳性能。@user1209681您也可以在虚拟主机中执行此操作(如果您有权访问它)。语法略有不同,性能差异更好,但可能难以察觉