0

У меня есть сценарий на моей странице по умолчанию, который перенаправляет пользователей на языковые версии моего сайта в зависимости от языка браузера. Я хочу добавить что-то, что перенаправляет тех пользователей, у которых НЕ включен Javascript.Как лучше перенаправить веб-страницу без использования Javascript?

В настоящее время у меня есть следующий:

<noscript> 
    <META HTTP-EQUIV=REFRESH CONTENT="1; URL=en/index.htm">. 
</noscript> 

Но я прочитал это не слишком мудро, как некоторые поисковые системы неодобрительно на него. Как мне это сделать и держать поисковые системы счастливыми?

+0

Как вы собираетесь определять язык браузера без Javascript? – Lazarus

+0

Вы можете сделать это с заголовком http, отправленным браузером. Даже если браузер лежит на нем, javascript не намного безопаснее, так как способ проверить и по каким-то историческим причинам результат можно подделать –

+0

Вы можете показать пользователю ссылку: Нажмите здесь;) – bbmud

ответ

2

Вы также можете перенаправить на сервер с 301 кодом статуса HTTP. Это лучший способ сделать это для хорошего SEO. Пример в C#, но каждый платформа имеет свой собственный метод, чтобы добавить заголовки в ответ:

Response.Clear(); 
Response.Status = "301 Moved Permanently"; 
Response.AddHeader("Location", "/newfolder/newfilelocation"); 

Причина использовать код 301 состояния является то, что поисковая система индексирует новую страницу, потому что она была «перемещена навсегда» вместо 302, который был «временно перемещен».

7

Вы должны использовать файл .htaccess для определения языка браузера из заголовков (с использованием регулярного выражения), а затем перенаправить их таким образом. Выполнение этого полностью не зависит от клиентской конфигурации, и поисковые системы будут обрабатывать его должным образом. Здесь есть тонна информации о том, как это сделать.

+0

И если он использует IIS? Ничего общего с файлом .htaccess! – backslash17

5

Это может быть сделано с боковой серверном языке, добавив следующий заголовок HTTP

Location: /en/index 

будет перенаправлять пользователя http://www.example.com/en/index

+2

Вам также необходимо вернуть 301 (постоянный переадресацию) или 302 (временный переадресация) в качестве кода состояния HTTP. Только этого заголовка недостаточно. –

+0

Действительно, я забыл упомянуть об этом! –

2

Почему вы не перенаправляете на сервер, отвечая кодом статуса HTTP 302. Я не знаю, что у вас на сервере, но все фреймворки поддерживают его.