Tôi tự hỏi mã trạng thái HTTP nào tôi phải gửi trong chuyển hướng ngôn ngữ.Mã trạng thái HTTP cho chuyển hướng ngôn ngữ
Tôi có mã php sau để chuyển hướng qua tiêu đề HTTP đến ngôn ngữ quan trọng nhất trong tiêu đề trình duyệt Chấp nhận ngôn ngữ.
<?
$langs = array();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
// create a list like "en" => 0.8
$langs = array_combine($lang_parse[1], $lang_parse[4]);
// set default to 1 for any without q factor
foreach ($langs as $lang => $val) {
if ($val === '') $langs[$lang] = 1;
}
// sort list based on value
arsort($langs, SORT_NUMERIC);
}
}
// look through sorted list and use first one that matches our languages
foreach ($langs as $lang => $val) {
if (strpos($lang, 'ca')===0) {
header("location: ca/");
exit;
} else if (strpos($lang, 'es')===0) {
header("location: es/");
exit;
}
echo "$lang => $val<br>";
}
// show default site or prompt for language
header("location: en/");
?>
câu hỏi liên quan: HTTP status for functional redirect
Có lẽ 300, 301, 302, 303? Tại sao?
EDIT
Google gần đây đã được xuất bản này: http://googlewebmastercentral.blogspot.com/2011/12/new-markup-for-multilingual-content.html
Tôi thấy điều này:
HTTP TÌNH TRẠNG 300 Nhiều Lựa chọn
Tài nguyên yêu cầu tương ứng với bất kỳ một trong một tập hợp các đại diện của , mỗi lần có thông số riêng vị trí ific và thông tin thương mại- được hướng dẫn (mục 12) được cung cấp để người dùng (hoặc tác nhân người dùng) có thể chọn một đại diện được ưu tiên và chuyển hướng yêu cầu đến vị trí đó.
Trừ khi đó là yêu cầu HEAD, câu trả lời NÊN bao gồm một thực thể có chứa danh sách các đặc điểm và vị trí tài nguyên từ mà người dùng hoặc đại lý người dùng có thể chọn người thích hợp nhất. Định dạng đối tượng được chỉ định theo loại phương tiện được đưa ra trong trường tiêu đề Loại nội dung- Loại. Tùy thuộc vào định dạng và khả năng của
tác nhân người dùng, lựa chọn lựa chọn phù hợp nhất CÓ THỂ được thực hiện tự động. Tuy nhiên, đặc tả này không xác định bất kỳ tiêu chuẩn nào cho lựa chọn tự động như vậy.
Nếu máy chủ có lựa chọn đại diện được ưu tiên, nó NÊN bao gồm URI cụ thể cho đại diện đó trong trường Vị trí ; tác nhân người dùng CÓ THỂ sử dụng giá trị trường Vị trí để tự động chuyển hướng . Phản hồi này có thể lưu vào bộ nhớ cache trừ khi được chỉ định khác.
Và đây:
Lỗi HTTP 300 - Nhiều lựa chọn
Giới thiệu
máy chủ Web của bạn nghĩ rằng các URL được cung cấp bởi khách hàng (ví dụ như trình duyệt web của chúng tôi hoặc robot) không đủ cụ thể và cần có thêm một số lựa chọn để thực hiện thêm lựa chọn.
Đây thường là trường hợp URL đại diện cho mức cao nhóm cần chọn mức độ thấp hơn nào, ví dụ: một thư mục trong đó người dùng phải chọn một tệp cụ thể để truy cập .
300 lỗi trong chu kỳ HTTP
Bất kỳ khách hàng (ví dụ như trình duyệt web của bạn hoặc CheckUpDown robot của chúng tôi) đi qua các chu kỳ sau khi nó giao tiếp với máy chủ web:
lấy địa chỉ IP từ Tên IP của trang web (URL trang web không có 'http: //' hàng đầu). Tra cứu này (chuyển đổi tên IP thành địa chỉ IP) được cung cấp bởi máy chủ tên miền (DNS). Mở kết nối ổ cắm IP tới địa chỉ IP đó. Viết một luồng dữ liệu HTTP thông qua ổ cắm đó. Nhận lại luồng dữ liệu HTTP từ máy chủ Web để phản hồi. Luồng dữ liệu này chứa các mã trạng thái có giá trị được xác định bởi giao thức HTTP. Phân tích cú pháp luồng dữ liệu này cho mã trạng thái và thông tin hữu ích khác. Lỗi này xảy ra trong bước cuối cùng là ở trên khi khách hàng nhận được mã trạng thái HTTP mà nó nhận ra là '300'.
Sửa 300 lỗi - chung
Điều đầu tiên bạn cần làm là kiểm tra URL của bạn trong trình duyệt Web. Nếu bạn thấy một số loại trang web nhắc bạn về thêm hành động/sự lựa chọn, thì URL của bạn như là viết tắt của nó không đủ chi tiết để máy chủ Web xử lý.
Sửa lỗi 300 - CheckUpDown
Bạn không bao giờ nên thấy lỗi này trên tài khoản CheckUpDown của bạn nếu bạn đã cho chúng tôi một địa chỉ URL cấp cao nhất (như www.isp.com) để kiểm tra. Nếu nó xảy ra cho một URL cấp cao nhất, rất có khả năng máy chủ Web phần mềm đã được lập trình hoặc cấu hình không chính xác. Nếu bạn có , hãy cung cấp cho chúng tôi URL cấp thấp (chẳng hạn như www.isp.com/products/index.html) để kiểm tra, có khả năng là URL này không thể truy cập được ngay cả qua Trình duyệt web .
Điều đầu tiên bạn cần làm là kiểm tra URL của bạn trong trình duyệt Web. Nếu bạn thấy một trang Web hợp lý, sau đó nó có thể cho biết một khiếm khuyết trong phần mềm của chúng tôi. Tuy nhiên, nếu bạn thấy một số loại trang web nhắc bạn về hành động/lựa chọn khác, thì URL của bạn không phù hợp để chúng tôi kiểm tra, vì hệ thống của chúng tôi không thể thực hiện loại lựa chọn này.
Vui lòng liên hệ trực tiếp với chúng tôi (email ưa thích) bất cứ khi nào bạn gặp phải lỗi 300. Chỉ có chúng tôi mới có thể giải quyết chúng cho bạn. Nếu có lỗi trong phần mềm của chúng tôi, chúng tôi sẽ sửa lỗi đó. Tuy nhiên, nếu URL của bạn về cơ bản không phù hợp để chúng tôi sử dụng số , bạn cần thay đổi nó trên tài khoản CheckUpDown của mình (bắt đầu bằng cách nhấp vào nút 'Quản lý').
Trong tất cả những sự lựa chọn, 303 là một trong đó là chắc chắn không chính xác. Ví dụ: nếu bạn PUT thành tài nguyên được thương lượng, bạn không muốn thư viện HTTP thay đổi yêu cầu GET sau khi chuyển hướng. –