Diễn đàn

Cách thiết lập chuyển hướng theo ngôn ngữ trong htaccess

Bạn có thể sử dụng công cụ này, vì vậy, bạn có thể sử dụng Apache để đạt được mục tiêu của mình Bạn có thể dễ dàng tìm thấy những gì bạn có thể làm khi bạn làm điều đó với bạn.

Có một cách dễ dàng không cần lập trình – chỉ cần sao chép một vài dòng vào tệp .htaccess. Dưới đây là ví dụ mã cho các ngôn ngữ khác nhau.

Tại sao nên sử dụng chuyển hướng dựa trên ngôn ngữ trình duyệt
Khi tạo một trang web đa ngôn ngữ, có nhiều cách tiếp cận khác nhau về cách người dùng chọn ngôn ngữ nội dung.

Tự động phát hiện ngôn ngữ theo địa chỉ IP
Cách tiếp cận này dựa trên thực tế là mỗi địa chỉ IP tương ứng với một quốc gia hoặc khu vực cụ thể. Khi máy chủ phát hiện người dùng được kết nối chẳng hạn từ Đức, trang web có thể dẫn người dùng đến phần tiếng Đức.

Có một số câu hỏi với điều này ..:

nếu đó là một quốc gia nơi mọi người nói các ngôn ngữ khác nhau, như Bỉ hay Thụy Sĩ?
nếu người dùng hiện được kết nối không phải từ quốc gia ban đầu của anh ấy (đang đi công tác hoặc đi nghỉ), chẳng hạn như một người Pháp đang ở Thái Lan?
Và tùy chọn này sẽ yêu cầu lập trình chẳng hạn bằng PHP để liên kết địa chỉ IP với các ngôn ngữ.

Lựa chọn ngôn ngữ của người dùng và lưu vào cookie
Cách tiếp cận trước tiên là hiển thị một trang bằng tiếng Anh nơi người dùng có thể chọn ngôn ngữ ưa thích. Sau đó, máy chủ lưu lựa chọn của người dùng là cookie và sử dụng các tùy chọn đã lưu mỗi khi người dùng yêu cầu một trang. Nhược điểm là một số người dùng sẽ ngay lập tức đóng trang bằng ngôn ngữ họ không hiểu nếu không chọn ngôn ngữ ưa thích.

Và điều này cũng đòi hỏi phải lập trình.

Tự động phát hiện ngôn ngữ dựa trên cài đặt trình duyệt
Cài đặt ngôn ngữ của trình duyệt web của khách hàng có sẵn trên trang web. Ngôn ngữ trình duyệt trên thiết bị của người dùng không thay đổi khi người dùng di chuyển giữa các khu vực hoặc quốc gia, vì vậy ngay cả khi người đó được kết nối từ quốc gia khác, trang web vẫn sẽ sử dụng ngôn ngữ của người đó.

Do đó, người dùng sẽ ngay lập tức nhận được nội dung bằng ngôn ngữ mình hiểu. Và cách tiếp cận này không cần lập trình.

Vì vậy, cách này giải quyết được nhiệm vụ ngôn ngữ và rất dễ thực hiện.

Cách thiết lập chuyển hướng dựa trên ngôn ngữ trong htaccess
Sao chép các điều kiện và quy tắc chuyển hướng sang phần ReWrite, ví dụ: các dòng này kiểm tra xem tiếng Đức có phải là ngôn ngữ ưa thích không và theo đó, chuyển hướng trình duyệt của người dùng đến phần /de/:

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://%{HTTP_HOST}/de/ [L,R]
Để biết thêm chi tiết, hãy xem các liên kết tài liệu ở cuối bài viết..

Tương tự, bạn có thể thêm nhiều ngôn ngữ hơn và cuối cùng chỉ định ngôn ngữ mặc định. Ví dụ: thiết lập hoàn chỉnh hơn cho mô-đun Rewrite trong tệp .htaccess có thể được viết như thế này:

RewriteEngine On

# Danish
RewriteCond %{HTTP:Accept-Language} ^da [NC]
RewriteRule ^$ http://%{HTTP_HOST}/da/ [L,R]
# German
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://%{HTTP_HOST}/de/ [L,R]
# Spanish
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://%{HTTP_HOST}/es/ [L,R]
# Finnish
RewriteCond %{HTTP:Accept-Language} ^fi [NC]
RewriteRule ^$ http://%{HTTP_HOST}/fi/ [L,R]
# French
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://%{HTTP_HOST}/fr/ [L,R]
# Italian
RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^$ http://%{HTTP_HOST}/it/ [L,R]
# Dutch
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://%{HTTP_HOST}/nl/ [L,R]
# Norwegian
RewriteCond %{HTTP:Accept-Language} ^no [NC]
RewriteRule ^$ http://%{HTTP_HOST}/no/ [L,R]
# Portuguese
RewriteCond %{HTTP:Accept-Language} ^pt [NC]
RewriteRule ^$ http://%{HTTP_HOST}/pt/ [L,R]
# Swedish
RewriteCond %{HTTP:Accept-Language} ^sv [NC]
RewriteRule ^$ http://%{HTTP_HOST}/sv/ [L,R]
# English as default
RewriteRule ^$ http://%{HTTP_HOST}/en/ [L,R]
Như mọi khi, bạn nên sao lưu tệp khi thực hiện thay đổi. Chỉ trong trường hợp.

Tệp đã sửa đổi .htaccessphải được tải lên thư mục gốc của trang web bằng bất kỳ phần mềm máy khách FTP/SFTP nào như FileZilla , PSFTP .

Cách kiểm tra cài đặt htaccess
Bạn có nên kiểm tra lỗi cú pháp ,htacess đã sửa đổi bằng dịch vụ trực tuyến như http://htaccesscheck.com/ hay không .

Để kiểm tra cách hoạt động của tính năng chuyển hướng dựa trên ngôn ngữ, bạn cần mở một trang web trong trình duyệt (trang chủ của nó), mỗi lần sử dụng một ngôn ngữ khác nhau trong cài đặt và trình duyệt sẽ tự động chuyển đến phần ngôn ngữ.

Cách thêm nhiều ngôn ngữ hơn nữa
Đối với mỗi ngôn ngữ, bạn cần chèn hai dòng vào .htaccess – một dòng có điều kiện RewriteCond, dòng thứ hai có chuyển hướng RewriteRule, tương tự như dòng hiển thị trong đoạn mã ở trên.

Mỗi ngôn ngữ có một chữ viết tắt gồm hai chữ cái theo ISO 639-1. Xin lưu ý rằng ký hiệu này không khớp với ký hiệu quốc gia gồm hai chữ cái, chẳng hạn như đối với tiếng Đan Mạch, tiếng Thụy Điển và nhiều quốc gia khác. Xem liên kết ở cuối bài viết để biết thêm chi tiết.

Bản tóm tắt
Với cài đặt mô-đun ReWrite trong tệp .htaccess, bạn có thể dễ dàng trong vài phút mà không cần lập trình bằng cách sao chép các dòng để thực hiện chuyển hướng tự động sang ngôn ngữ đã chọn trong trình duyệt của người dùng.

Trả lời chủ đề này Chia sẻ trên dòng thời gian

1 Trả lời

Avatar

Tuấn Nguyễn·

RewriteCond %{HTTPS:Accept-Language} ^vi [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=vietnamese [L,R=301]

RewriteCond %{HTTPS:Accept-Language} ^en [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=english [L,R=301]

RewriteCond %{HTTPS:Accept-Language} ^ar [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=arabic [L,R=301]

RewriteCond %{HTTPS:Accept-Language} ^hi [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=hindi [L,R=301]

# Danish
RewriteCond %{HTTPS:Accept-Language} ^da [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=danish [L,R]
# German
RewriteCond %{HTTPS:Accept-Language} ^de [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=german [L,R]
# Spanish
RewriteCond %{HTTPS:Accept-Language} ^es [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=spanish [L,R]
# persian
RewriteCond %{HTTPS:Accept-Language} ^fa [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=persian [L,R]
# French
RewriteCond %{HTTPS:Accept-Language} ^fr [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=french [L,R]
# Italian
RewriteCond %{HTTPS:Accept-Language} ^it [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=italian [L,R]
# Dutch
RewriteCond %{HTTPS:Accept-Language} ^nl [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=dutch [L,R]

# Portuguese
RewriteCond %{HTTPS:Accept-Language} ^pt [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=portuguese [L,R]
# Swedish
RewriteCond %{HTTPS:Accept-Language} ^id [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=indonesian [L,R]

RewriteCond %{HTTPS:Accept-Language} ^zh [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=chinese [L,R]

RewriteCond %{HTTPS:Accept-Language} ^sv [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=swedish [L,R]

RewriteCond %{HTTPS:Accept-Language} ^bn [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=bengali [L,R]

RewriteCond %{HTTPS:Accept-Language} ^ur [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=urdu [L,R]

RewriteCond %{HTTPS:Accept-Language} ^he [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=hebrew [L,R]

RewriteCond %{HTTPS:Accept-Language} ^ru [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=russian [L,R]

RewriteCond %{HTTPS:Accept-Language} ^tr [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=turkish [L,R]

RewriteCond %{HTTPS:Accept-Language} ^hr [NC]
RewriteRule ^$ https://%{HTTPS_HOST}/?lang=croatian [L,R]