2010-05-26 52 views
8

Tôi đã có một số người dùng đang cố truy cập trang web được đăng ký dưới dạng subdomain.example.com với www.subdomain.example.com.chuyển hướng www.subdomain.example.com sang subdomain.example.com

có một số loại quy tắc .htaccess mà tôi có thể thêm để chuyển hướng những người đến sử dụng www.subdomain.example.com tới subdomain.example.com không?

Ngoài ra, tôi có phải thay đổi công cụ DNS không?

Trả lời

16

Chắc chắn, sử dụng một chỉ thị như:

<VirtualHost *:80> 
    ServerName www.subdomain.example.com 
    Redirect permanent/http://subdomain.example.com/ 
</VirtualHost> 

Apache tự động lưu giữ bất cứ điều gì sau khi / khi sử dụng Redirect chỉ thị, mà là một quan niệm sai lầm phổ biến về lý do tại sao phương pháp này sẽ không hoạt động (khi ở thực tế nó không).

Ngoài ra, có, bạn cần thay đổi bản ghi DNS, vì www.subdomain.example.com là tên máy chủ riêng biệt cần bản ghi A (hoặc CNAME) riêng để trỏ trình duyệt đến máy chủ thích hợp ngay từ đầu.

+0

điều này giả định OP đang sử dụng 'NameVirtualHost *: 80' – Martin

+0

@Martin: Đó là một giả định hợp lý an toàn. Nếu không, thì phần quan trọng là chỉ thị 'Redirect', không phải là vùng chứa' VirtualHost'. –

+0

Thực tế là mọi người đã truy cập vào trang web bằng cách sử dụng 'www.subdomain.domain.com' cho thấy rằng bản ghi DNS có thể đã được đặt đúng vị trí ... nếu có, nó không cần phải thay đổi. –

4
RewriteCond %{HTTP_HOST} ^www.subdomain.domain.com 
RewriteRule (.*) http://subdomain.domain.com/$1 [R=301,L] 
+1

Sử dụng động cơ viết lại là một cách khá nặng để giải quyết vấn đề này . Chỉ thị 'Redirect' thực hiện chính xác điều tương tự. –

+0

@GregHewgill Đồng ý, và hơn nữa, câu trả lời này thậm chí sẽ không hoạt động trừ khi được đặt bên trong vhost sẽ khớp với www.subdomain.domain.com (hoặc vhost mặc định). –

-1

Bạn cần phải thêm một chỉ thị máy chủ ảo trong httpd.conf và Chuyển Permament đến miền phụ chính xác và thêm các mục DNS bổ sung (CNAME là tốt)

Các vấn đề liên quan