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