2012-04-19 37 views
12

Tôi có hai tên miền khác nhau (giả sử www.site1.com và www.site2.com) trỏ đến cùng một máy chủ lưu trữ.htaccess viết lại dựa trên tên máy chủ hoặc tên miền

Tôi cần hai tên miền khác nhau vì tôi muốn sử dụng tên miền đầu tiên cho nội dung tiếng ý và thứ hai cho nội dung tiếng Anh. Nội dung giống nhau, trừ khi cho ngôn ngữ, nhưng các tên miền khác nhau.

Vì vậy, tôi muốn viết một quy tắc cho phép tôi dịch từ:

  • www.site1.com để /?lang=it

  • www.site2.com để /?lang=en

Tôi thường sử dụng cùng một tên miền cho nhiều ngôn ngữ khác nhau được viết lại từ www.site.com/it/ đến /?lang=it (tất nhiên, viết lại trong suốt - người dùng không thấy bất kỳ URL nào khác).

Tôi muốn đạt được điều tương tự bằng cách sử dụng các miền khác nhau nhưng tôi không thể tìm ra cách ... Tôi đã làm việc trên đó hàng giờ và tôi không thể đạt được những gì tôi muốn!

Thông thường tôi sử dụng này:

RewriteCond %{REQUEST_URI} /([a-z]{2}) 
RewriteRule ^([a-z]{2})[/]*$ /index.php?lang=$1 [NC,QSA] 

tôi không thể có được một tác phẩm này, sử dụng tên miền khác nhau:

RewriteCond %{HTTP_HOST} ^www.site1\.com [NC] 
RewriteCond %{REQUEST_URI} !^/index.php?lang=it 
RewriteRule ^(.*)$ /index.php?lang=it [NC,QSA] 

RewriteCond %{HTTP_HOST} ^www.site2\.com [NC] 
RewriteCond %{REQUEST_URI} !^/index.php?lang=en 
RewriteRule ^(.*)$ /index.php?lang=en [NC,QSA] 
+2

có thể trùng lặp của [.htaccess RewriteRule: hai tên miền sử dụng cùng một máy chủ và thư mục] (http://stackoverflow.com/questions/6972413/htaccess-rewriterule-two-domains-using-same-server-and-directory) –

+0

Điều gì xảy ra với thiết lập này? Và nếu bạn xóa RewriteCond thứ hai ('^/index.php? Lang = it' sẽ không bao giờ khớp, REQUEST_URI không hiển thị tham số truy vấn, hãy kiểm tra% {QUERY_STRING} thay thế)? – nikoshr

+0

Tôi đã thử nhiều "phiên bản" khác nhau của các quy tắc trong khối màu xám sau ... Tôi luôn nhận được lỗi HTTP 500 hoặc chỉ một $ _GET trống. Ý tôi là, trong số những dự án khác, có hoặc không có điều kiện thứ hai "RewriteCond% {REQUEST_URI}! ^/Index.php? Lang = it". –

Trả lời

21

Lawrence Cherone - Cảm ơn bạn, rằng một hoạt động giống như một nét duyên dáng! Bây giờ nó hoạt động:

RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC] 
RewriteRule ^(.*)$ index.php?lang=it [NC,QSA] 
RewriteCond %{HTTP_HOST} ^www\.site2\.com [NC] 
RewriteRule ^(.*)$ index.php?lang=en [NC,QSA] 

Tất nhiên tôi kiểm tra chuyển hướng www trước quy tắc này.

Cảm ơn bạn !!

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