2011-09-29 5 views
6

Tôi đang sử dụng sau chuyển hướng tên miền ký tự đại diện phụ đến các thư mục tương ứng:htaccess mod-viết lại để tên miền phụ

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

Tôi muốn thêm một quy tắc viết lại rằng chuyển hướng bất cứ ai truy cập vào trực tiếp/người dùng/path quay lại phiên bản tên miền phụ như sau:

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

Cảm ơn bạn trước!

Trả lời

10

Something như thế này:

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] 

Bạn có những quy định khác so với cái niêm yết trên câu hỏi? nếu có, hãy đặt chúng trước cái kia.

ví dụ:

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

Cảm ơn bạn! Tuy nhiên điều này dường như chỉ hoạt động cho ../users/username => username.domain.com, tôi cần nó cũng hoạt động cho ../users/username/sub1/sub2/ => username.domain.com/sub1/sub2 . Điều này có thể không? – dSquared

+0

Tôi đã cập nhật câu trả lời –

+0

Cảm ơn bạn rất nhiều! Điều đó hoạt động hoàn hảo, bất kỳ cơ hội nào nó có thể được thực hiện để hoạt động trên cả hai phiên bản www.domain.com và domain.com? – dSquared