2011-12-18 2 views
0

У меня есть проблема с правилами перезаписи; так что я пытаюсь это сделать;mod-rewrite subdomain to subdomain dir

[имя] .domain.com/файлы/к [имя] .domain.com/пользователи/[имя]/файлов,

где [имя] является суб-домен, например, "ник" , Важная часть состоит в том, что перенаправление должно происходить только, если запрос содержит подкаталог; файлы /.

Примеры, которые я могу найти в Google, - это примеры, связанные с перенаправлением поддоку и подкаталогом поддоку в другое перенаправление подкаталогов, никогда не сочетающее эти два.

ответ

2

Попробуйте поместить эти правила в файле .htaccess в корне документа:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC] 
RewriteRule ^files/(.*)$ /users/%1/files/$1 [L] 

Я предположил, что у вас не было в ваших/пользователей в www/поэтому я добавил условие !^www\.. Если вы do хотите получить запросы на www.domain.com, чтобы перейти к/users/www /, то просто удалите эту строку.

+1

Хорошо сделано +1 для вас ... возможно, флаг 'QSA' в конце' RewriteRule' (все зависит от того, что хочет сделать аромат) –

+0

Строка запроса добавляется автоматически, когда **? ** isn 't присутствует в задаче правила. Если целью правила было «/ users /% 1/files/$ 1? Redir = no» или что-то еще, ему понадобится 'QSA'. –

+0

Я знаю, но предположим, что некоторые другие URL-адреса, которые имеют параметры после их?? проходят через эти правила: их параметры теряются. Так что все зависит от того, что хочет сделать аромат: либо обязательно отбросьте все параметры раньше, либо примените только новые, ** или ** сохраните старые и смешайте с новыми. –