17

Tôi có khoảng 18 tên miền cần được chuyển hướng đến một tên miền mới. Nó phải làm việc cả hai có hoặc không có www prepended.Chuyển hướng nhiều miền tới một tên miền (có hoặc không có www trước)

Tôi đã thử thế này: (? Và chỉ làm việc với www trước đây, tôi nghĩ rằng)

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    Rewritecond %{HTTP_HOST} !^www\.domain\.com 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] 
</IfModule> 

Điều đó mang lại cho tôi một vòng lặp chuyển hướng.

+0

Vì '[OR]' ở cuối mỗi tên miền không có trong câu trả lời của bạn và giải quyết được vấn đề của tôi. – qwerty

Trả lời

30
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain1.com [OR] 
RewriteCond %{HTTP_HOST} ^domain2.com [OR] 
RewriteCond %{HTTP_HOST} ^domain3.com [OR] 
RewriteCond %{HTTP_HOST} ^domain4.com [OR] 
RewriteCond %{HTTP_HOST} ^domain5.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L] 

này sẽ chuyển hướng tất cả 18 lĩnh vực của bạn để bạn đến tên miền mới duy nhất của bạn www.newdomain.com Nếu không, bạn có thể sử dụng đoạn mã sau để chuyển hướng mỗi tên miền nếu chúng nằm trên máy chủ riêng biệt

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

Cảm ơn bạn, tôi sẽ thử. – qwerty

+0

Yup, [OR] đã giải quyết được vấn đề tôi gặp phải. Cảm ơn! – qwerty

+0

bạn được chào đón ... –

-1
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^domain.com 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=permanent,L] 

^domain.com giải quyết vấn đề của WWW, vì vậy, tất cả các miền phụ sẽ chuyển hướng.

Đảm bảo rằng http://www.newdomain.com không được bao gồm trong RewriteCond.

Điều đó sẽ gây ra một vòng lặp chuyển hướng

More info

+0

Có thể khớp "bất kỳ thứ gì * không * newdomain.com" thay vì thêm từng tên miền theo cách thủ công là 'RewriteCond' không? Điều này sẽ là một rắc rối lớn cho tôi để làm bởi vì có khoảng 18 tên miền trỏ đến cái mới, và khách hàng đang xem xét việc thêm sớm hơn (và tôi không muốn phải đào trong .htaccess mỗi lần). – qwerty

+0

Không chắc chắn, bạn sẽ phải nghiên cứu. Nhưng 18 thực sự không phải là nhiều ... – surfer190

+0

'RewriteCond% {REQUEST_URI}!^Newdomain.com' Tôi nghĩ rằng điều này có thể làm việc – surfer190

17

Thay vì chuyển hướng a.com, b.com, c.com để newdomain.com bạn có thể làm điều này:

Chuyển tất cả mọi thứ đó là khôngnewdomain.com để http://www.newdomain.com

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !newdomain.com$ [NC] 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] 

tín dụng cho điều này đi vào: http://www.raramuridesign.com/blog/83-dev-htaccess-redirect-a-domain-or-multiple-domains.html nơi nó được giải thích chi tiết hơn.

Tôi đã thử nó cho một dự án khách hàng và nó hoạt động như một sự quyến rũ.

+0

'tôi đoán rằng nếu tôi hoàn tất địa chỉ' RewriteCond' thành 'www.newdomain.com', nó cũng sẽ chuyển hướng bất kỳ tên miền phụ nào đến www. Tôi có đúng không? – robotik

+0

Công trình này tuyệt vời, ngoại trừ khi có thứ gì đó được thêm vào url (ví dụ: example.com/members). Có thể mở rộng nó để tự động bao gồm các phần sau của URL đã nhập không? – melat0nin

4

Trải nghiệm của tôi sau vài ngày lục lọi SO và các hướng dẫn của máy chủ khác thật đáng thất vọng. Tuy nhiên, tôi cherry-nhặt những phần workful tốt nhất của tất cả trong số họ và mang lại những điều sau đây:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^domain1\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain2\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^domain2\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain3\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^domain3\.com$ 
RewriteRule ^/?$ "http\:\/\/www\.domain\.com\/" [R=301,L] 
  • Định dạng trên cũng là theo cPanel phong cách chuyển hướng thực hiện trong GUI.
  • Chuyển hướng của www. phiên bản và không phải www. phiên bản của tên miền là một trong những vấn đề mà các giải pháp khác (ít nhất tôi đã thử em!) không thể giải quyết nó.
  • Chú ý đến ^/?$ trong RewriteRule

Nếu bạn muốn chuyển hướng phiên bản www của tên miền chính lên phiên bản phi www của nó, hai dòng cuối cùng nên là như thế này:

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ 
RewriteRule ^/?$ "http\:\/\/domain\.com\/" [R=301,L] 

Chuyển hướng tốt!

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