Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как добавить в url адрес текущей страницы (https://javascript.ru/forum/misc/70002-kak-dobavit-v-url-adres-tekushhejj-stranicy.html)

samdo 02.08.2017 21:15

Как добавить в url адрес текущей страницы
 
Приветствую!
Подскажите как реализовать следующее:
есть сайт с 2-мя языковыми версиями (ru и en), русская версия сайта располагается по адресу site.ru, а английская - по адресу site.ru/en. Адреса страниц имеют одинаковые url-ы, за исключением того, что на английской версии в url-е присутсвует подкаталог /en/. Нужно, чтобы при переключении на английский, к ссылке добавлялся этот подкаталог (en) и при этом сохранялся адрес страницы.
Объясню на примере:
Пользователь находится на странице site.ru/some-page, при клике на переключатель языка (EN) его редиректит на site.ru/en/some-page. И наоборот.
Решение через .htaccess не подходит, т.к. используется nginx, к настройкам сервера доступа тоже нет, поэтому будет круто если это будет js
Заранее спасибо.

j0hnik 02.08.2017 21:41

будет ли сайт продвигаться в поисковых системах?

samdo 02.08.2017 21:43

да, планируется

j0hnik 02.08.2017 21:51

Тогда делайте нормальную перелинковку, а не средствами JS.

samdo 02.08.2017 21:54

А каким же еще образом я добавлю к url-у site.ru/some-page вот это "/en/", чтобы получилось site.ru/en/some-page ?

j0hnik 02.08.2017 21:59

Цитата:

Сообщение от samdo (Сообщение 460434)
А каким же еще образом я добавлю к url-у site.ru/some-page вот это "/en/", чтобы получилось site.ru/en/some-page ?

Точно таким же, как и делали перелинковку между станицами.

samdo 02.08.2017 22:06

Вы наверное меня не правильно поняли, подставлять в URL вот это "/en" нужно только при клике на переключатель языков, а все страницы в пределах каждого сайта линкуются, естественно, обычным способом.

рони 02.08.2017 22:47

samdo,
function enRu() {
   var x = window.location;
   var reg = /\/en\//;
   if(reg.test(x)) x = x.replace(reg,"/");
   else {
   var n = x.lastIndexOf("/");
   x = x.slice(0,n) + "/en" + x.slice(n)
   }
   window.location = x
}

samdo 03.08.2017 07:16

Цитата:

Сообщение от рони (Сообщение 460437)
samdo,
function enRu() {
   var x = window.location;
   var reg = /\/en\//;
   if(reg.test(x)) x = x.replace(reg,"/");
   else {
   var n = x.lastIndexOf("/");
   x = x.slice(0,n) + "/en" + x.slice(n)
   }
   window.location = x
}

А как должен выглядеть html в данном случае? у меня на данный момент он выглядит так:
<a href="/en/">English</a>
JS не срабатывает.

laimas 03.08.2017 08:19

Цитата:

Сообщение от samdo
у меня на данный момент он выглядит так:
<a href="/en/">English</a>

Если кнопки, это ссылки, так пропишите сразу в каждой нужный URL: domain/ru и domain/en, и не надо никаких скриптов.

рони 03.08.2017 08:23

samdo,
<a href="#" onclick="enRu()">English/Russian</a>

laimas 03.08.2017 08:31

samdo,
не прочел сначала чего надо. Но все это ни к чему, то что rewrite не работает в nginx, это не так, просто у него иные инструкции. Есть даже готовые онлайн конверторы инструкций .htaccess для файла конфигурации nginx.

samdo 03.08.2017 08:33

Цитата:

Сообщение от laimas (Сообщение 460460)
Если кнопки, это ссылки, так пропишите сразу в каждой нужный URL: domain/ru и domain/en, и не надо никаких скриптов.

Но в этом случае мы при переключении со страницы site.ru/some-page (например, на английский) мы попадаем на главную страницу (site.ru/en), а нам надо попасть на site.ru/en/some-page

P.S.рони, что-то не срабатывает :no:

laimas 03.08.2017 08:37

Цитата:

Сообщение от samdo
Но в этом случае мы при переключении со страницы site.ru/some-page (например, на английский) мы попадаем на главную страницу (site.ru/en), а нам надо попасть на site.ru/en/some-page

Это смотря как вы будете в кнопке ссылки формировать. У вас же раздельные домены, а значит на каждом по одной кнопке выбора языка. Кнопку кто выводит? Сервер. Ему что сложно подставлять в url ссылку адреса текущей страницы, но только другого домена?

рони 03.08.2017 08:44

samdo,
попробуйте так, копировать целиком
<script>
function enRu() {
   var x = window.location+"";
   var reg = /\/en\//;
   if(reg.test(x)) x = x.replace(reg,"/");
   else {
   var n = x.lastIndexOf("/");
   x = x.slice(0,n) + "/en" + x.slice(n)
   }
   window.location = x
}

  </script>
<a href="#" onclick="return enRu()">English/Russian</a>

samdo 03.08.2017 08:57

рони, почти :)

Добавляется "/en/", но в конец URl-a (получается вот так site.ru/some-page/en/), а нам нужно вот так site.ru/en/some-page/

рони 03.08.2017 09:03

samdo,
function enRu() {
   var x = window.location+"";
   var reg = /\/en\//;
   if(reg.test(x)) x = x.replace(reg,"/");
   else {
   x = x.replace("site.ru","site.ru/en");
   }
   window.location = x
}

samdo 03.08.2017 09:18

рони, ДА, это оно, работает :thanks:

P.S. А реально ли, чтобы при наведении на эту ссылку в строке состония показывался нужный адрес (site.ru/en/some-page), а не "site.ru/en/#" (надеюсь я не сильно обнаглел :) )

Nexus 03.08.2017 09:19

Цитата:

Сообщение от samdo
Но в этом случае мы при переключении со страницы site.ru/some-page (например, на английский) мы попадаем на главную страницу (site.ru/en), а нам надо попасть на site.ru/en/some-page

$_SERVER['HTTP_REFERER'] не определяется?

laimas 03.08.2017 09:25

samdo,
перестаньте хренью маяться, это не JS работа, этим должен заниматься сервер, формируя сразу нужный URL в ссылке:

<a href="http://site.ru/<?=ltrim($_SERVER['REQUEST_URI'], '/en')?>">Russian</a>
<a href="http://site.ru/en<?=$_SERVER['REQUEST_URI']?>">English</a>

рони 03.08.2017 09:26

samdo,
нормальное решение это
Цитата:

Сообщение от laimas
Кнопку кто выводит? Сервер. Ему что сложно подставлять в url ссылку адреса текущей страницы, но только другого домена?

и не надо никакого скрипта.

рони 03.08.2017 09:37

:lol: под рубрикой: никогда так не делайте
<script>
(function() {
   var x = window.location;
   var reg = /\/en\//;
   if(reg.test(x+"")) x = (x+"").replace(reg,"/");
   else {
   x = (x+"").replace(x.hostname,x.hostname+"/en");
   }
   document.write('<a href="'+x+'" >English/Russian</a>')
}())
</script>

samdo 03.08.2017 09:44

Всем преогромнейшая благодарность, в особенности рони и laimas, очень выручили.

P.S.Всем здоровья и удачи.
P.S.S.Если я как-то могу Вас отблагодарить - дайте знать.


Часовой пояс GMT +3, время: 12:42.