2011-04-13 23 views
8

này là mã .htaccess tôi vì vậy nếu các loại người dùng chỉ domain.com sẽ được chuyển đến www.domain.comhtaccess: exluce một số lĩnh vực trong RewriteCond

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

vấn đề của tôi bây giờ là tôi có một tên miền mới trỏ đến cùng một đường dẫn tên miền vì vậy ngay cả tên miền mới được chuyển hướng "trong suốt" đến domain.com ...

làm cách nào để loại trừ một số tên miền khỏi quy tắc đó?

cảm ơn!

Trả lời

8

Bạn có thể thử viết lại chung chung, vì vậy tất cả các yêu cầu không bắt đầu bằng www được chuyển hướng, nhưng trên miền chính xác/được yêu cầu.

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

Hoặc, bạn có thể kiểm tra thay vì nếu tên miền bắt đầu với domain.com:

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

Hy vọng điều này giúp.

+1

Cảm ơn câu trả lời tuyệt vời. Bạn có thể mô tả phần mã một phần không? Chỉ là mã đầu tiên. – Hamidreza

+0

Câu trả lời hay. Giải thích cú pháp của bạn chi tiết sẽ làm cho câu trả lời này là _excellent_. Chỉ cần nói. :) –

+0

OP đã cố gắng chuyển hướng nhiều tên miền đến cùng một đường dẫn, tuy nhiên, 'RewriteCond' ban đầu đã tìm kiếm một miền cụ thể (ví dụ: www.domain.com). Ví dụ đầu tiên của tôi, sẽ chuyển hướng bất kỳ miền nào, không bắt đầu bằng 'www.' đến đường dẫn được yêu cầu với' www.' được thêm vào trước. 'RewriteRule' thực hiện điều này bằng cách sử dụng nhóm đầu tiên từ biểu thức chính quy trong' RewriteCond', đây là những gì '% 1' hoàn thành. '$' được sử dụng để tham khảo các nhóm của biểu thức 'RewriteRule', trong khi'% 'được sử dụng để tham chiếu đến các nhóm của' RewriteCond'. Hy vọng rằng làm rõ mọi thứ. – clmarquart

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