Проблемы с перенаправлением - PullRequest
3 голосов
/ 03 марта 2011

Допустим, у меня есть веб-сайт www.mysite.com, и я хочу, чтобы он был многоязычным. Вот что я хочу достичь: -

1. Когда пользователь посещает мой сайт, я хочу получить ISO-код страны пользователя. Скажем, ISO это "FR". Теперь я хочу, чтобы пользователь был перенаправлен на www.mysite.fr

Если невозможно получить ISO-адрес, пользователь будет перенаправлен на www.mysite.com

Теперь я использовал dll с этого сайта http://ipaddressextensions.codeplex.com/ и использовал их метод, который похож на iso3066code (). НО я не могу получить код ISO на основе IP-адреса пользователя. Каков лучший способ получить код ISO в любом случае ??

2. У меня есть главная страница для разных стран. Как для Франции есть France.master, для Германии есть Germany.master и т. Д. Я хочу, чтобы сначала был выбран ISO-код пользователя, затем пользователь должен быть перенаправлен на сайт, соответствующий ISO И хотите, чтобы соответствующий мастер загрузился.

Вот сценарий: -

Пользователь из Франции открывает мой веб-сайт, набрав "www.mysite.com". Теперь я хочу показать пользователю содержимое моего сайта на французском языке, поэтому я хочу, чтобы он был перенаправлен на "www.mysite.fr" И хотите, чтобы France.master загружал все страницы. Я проверяю введенное пользователем «доменное имя верхнего уровня», в данном случае «com», затем я получаю код ISO затем, если существует ISO, пользователь перенаправляется на «www.mysite.fr»

В СЛУЧАЕ, ISO не может быть получено, "www.mysite.com" будет открыт только для пользователя.

3. Как мне перенаправить пользователя ?? Response.Redirect ("http://www.mysite.fr") не работает и выдает ошибки, такие как: -

«Страница не перенаправляет должным образом» Я попытался изменить ее на Response.Redirect («http://www.mysite.fr", false) и Response.Redirect ("http://www.mysite.fr", true). Это не сработало.

4. www.mysite.com и www.mysite.fr не являются двумя разными веб-сайтами. Просто, когда это www.mysite.com, на веб-сайте будет отображаться контент на английском языке. Когда это «www.mysite.fr», на веб-сайте можно увидеть французский контент.

То, что я сделал, было: -

В файле Global.asax: -

Я попытался получить ISO-код с использованием этой библиотеки выше с сайта ipaddressextensions. Затем я создал эту переменную Application ("UserISO") в файле Global.asax. ((Это хороший подход?)) Мне нужно было сделать это, потому что я хотел использовать эту глобальную переменную в самом глобальном файле. В каком-то определенном пользователем методе. Затем я устанавливаю имя главной страницы в файле cookie и использую этот файл cookie для динамического изменения главной страницы для каждой страницы содержимого в событии Page_PreInit (). и, наконец, я перенаправляю пользователя с помощью «Response.Redirect (« http://www.mysite.fr", false) ». Этот response.redirect не работает!

Теперь, я на правильном пути ?? Я очень озадачен тем, как на самом деле заставить его работать! :( Как многоязычный сайт перенаправляет своих пользователей? Где я могу узнать обо всем этом? Я пытался и пытался и пытался, но это просто не сработает!

Наконец, на данный момент для сайта не заданы доменные имена. Запуск его с использованием IP-адреса, установленного в IIS. Итак, как мне проверить мой сайт. Как мне на самом деле пойти на это. Я придерживаюсь правильного подхода вообще ??

Пожалуйста, направьте меня на правильный путь. Любая помощь будет оценена. Спасибо!

Ответы [ 3 ]

2 голосов
/ 03 марта 2011

В Бельгии есть 3 официальных языка, вы не можете найти мой язык, просто посмотрев на IP-адрес или домен.

Лучший способ найти язык посетителя - это проверить язык его языка.браузер.Вы можете найти его в Request.Userlanguages.

1 голос
/ 03 марта 2011

Не делай этого.Это действительно расстраивает, когда вы пытаетесь предположить, на каком языке говорит пользователь.Вы непременно ошибетесь для кого-то.Поместите небольшие значки с флагами или варианты выбора языка на главной странице в хорошо видимом месте, и пусть ваши посетители выбирают, на каком сайте / языке они хотят просматривать.

Отличный пример главной страницы входа в Facebookиз этого.

Редактировать: Лучшее, что вы могли бы сделать, это использовать HTTP1.1 заголовок Accept-Language в качестве подсказки, но даже тогда я думаю, что вы должны отодвинуть это требованиевашего проекта.

0 голосов
/ 03 марта 2011

Вы получаете ошибку перенаправления, потому что сайт .fr, вероятно, совпадает с сайтом .com, но сеансовые куки действительны только для определенного домена, что означает, что Session_OnStart () также вызывается при перенаправлении.Один из способов обойти это - каким-то образом переопределить редирект / ip-lookup, возможно, отправив строку запроса или определенную целевую страницу, которую вы можете идентифицировать:

www.site.fr /? Overrideredirect = true www.site.fr / redirected.aspx -> который затем перенаправляет обратно на / после Session_OnStart

Чтобы выбрать правильную главную страницу, вы, вероятно, могли бы определить, какой хост был запрошен, и с этой главной страницы переопределения в вашей глобальной сети.asax, возможно, в событии BeginRequest.

...