2012-02-14 2 views
2

Я строй сайта загрузки, An пользователи смогут зарегистрироваться и папка с именем пользователя будет созданы на моем сервере, что-то вроде: home/users/usernameВиртуальных субдомно с отображением подстановочных .htaccess

То, что я хочу сделать есть, если кто-либо типов: username.domain.com в браузере, он будет направлять их по адресу: home/users/username/, и если они типа: username.domain.com/file.mp3, он направит их: home/users/username/file.mp3

Если его можно выполнить вложенные папки маршрутизации, что было бы здорово полный пример, например; home/users/username/sub/file.mp3

Спасибо ребята

ответ

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] 
+0

У меня есть один вопрос с ним, всякий раз, когда я типа: test.domain.com/folder без слэш, это показывает реальный путь к папке в URL: test.domain.com/home/users/test –

+0

@ user1209681 Попробуйте добавить 'DirectorySlash Off' перед' RewriteEngine On', но см. оговорки http://stackoverflow.com/questions/3258879/apache-directoryslash-off-site-breaks –

+0

работает отлично @ Улич Палха благодарит. Еще один вопрос, есть ли другой способ, которым я могу это сделать, не используя .htaccess? Первоначально, который когда-либо будет работать лучше всего, производительность разумна, при большом объеме трафика. –

0

Я пробовал то, что рекомендовал Ульрих Палха, но не повезло. Надеюсь, это поможет ребятам вроде меня, когда ответ Ульриха не работает.

# 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] 
Смежные вопросы