мод htaccess-перезаписать в поддомен

#.htaccess #mod-rewrite

#.htaccess #мод-перезаписать

Вопрос:

Я использую следующее, чтобы перенаправить поддомены с подстановочными знаками в соответствующие папки:

 RewriteCond %{REQUEST_URI} !^/users/ [NC]
RewriteCond %{HTTP_HOST} ^(. ).domain.com$ [NC]
RewriteCond %1 !=www [NC]
RewriteRule ^(.*)$ /users/%1/$1/? [L]
  

Я хотел бы добавить правило перезаписи, которое перенаправляет любого, кто обращается к прямому / users/ path, обратно в версию поддомена следующим образом:

 www.domain.com/users/username/../../ => username.domain.com/../../
  

Заранее благодарю!

Ответ №1:

Что-то вроде этого:

 RewriteEngine On

RewriteCond %{http_host} ^domain.com [nc]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC]

RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^users/([a-z0-9-_.] )/?(.*)$ http://$1.domain.com/$2 [QSA,NC,R,L]
  

Есть ли у вас другие правила, кроме тех, которые указаны в вопросе? если да, поместите их перед другим.

например:

 http://www.domain.com/users/abc?q=test => http://abc.domain.com/?q=test
http://www.domain.com/users/abc/sub1/sub2 => http://abc.domain.com/sub1/sub2
http://www.domain.com/users/abc/sub1/?q=test => http://abc.domain.com/sub1/?q=test
  

Комментарии:

1. Спасибо! Однако, похоже, это работает только для ../users/username => username.domain.com , Мне нужно, чтобы это также работало для ../users/username/sub1/ sub2/ => username.domain.com/sub1/sub2 . Возможно ли это?

2. Большое вам спасибо! Это работает идеально, есть ли шанс, что это можно заставить работать на обоих www.domain.com и domain.com версии?

3. Я бы рекомендовал перенаправить domain.com => www.domain.com (просмотр моего обновленного ansewr)