Виртуальный поддомен с подстановочным знаком .htaccess - PullRequest
2 голосов
/ 14 февраля 2012

Я создаю сайт загрузки, пользователи смогут зарегистрироваться, и на моем сервере будет создана папка с их именем пользователя, что-то вроде: 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 ]

2 голосов
/ 14 февраля 2012

Попробуйте добавить следующее в файл .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 голосов
/ 28 марта 2012

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

# 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]
...