Как добавить в 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 Заранее спасибо. |
будет ли сайт продвигаться в поисковых системах?
|
да, планируется
|
Тогда делайте нормальную перелинковку, а не средствами JS.
|
А каким же еще образом я добавлю к url-у site.ru/some-page вот это "/en/", чтобы получилось site.ru/en/some-page ?
|
Цитата:
|
Вы наверное меня не правильно поняли, подставлять в URL вот это "/en" нужно только при клике на переключатель языков, а все страницы в пределах каждого сайта линкуются, естественно, обычным способом.
|
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 } |
Цитата:
<a href="/en/">English</a>JS не срабатывает. |
Цитата:
|
samdo,
<a href="#" onclick="enRu()">English/Russian</a> |
samdo,
не прочел сначала чего надо. Но все это ни к чему, то что rewrite не работает в nginx, это не так, просто у него иные инструкции. Есть даже готовые онлайн конверторы инструкций .htaccess для файла конфигурации nginx. |
Цитата:
P.S.рони, что-то не срабатывает :no: |
Цитата:
|
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> |
рони, почти :)
Добавляется "/en/", но в конец URl-a (получается вот так site.ru/some-page/en/), а нам нужно вот так site.ru/en/some-page/ |
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 } |
рони, ДА, это оно, работает :thanks:
P.S. А реально ли, чтобы при наведении на эту ссылку в строке состония показывался нужный адрес (site.ru/en/some-page), а не "site.ru/en/#" (надеюсь я не сильно обнаглел :) ) |
Цитата:
|
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> |
samdo,
нормальное решение это Цитата:
|
: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> |
Всем преогромнейшая благодарность, в особенности рони и laimas, очень выручили.
P.S.Всем здоровья и удачи. P.S.S.Если я как-то могу Вас отблагодарить - дайте знать. |
Часовой пояс GMT +3, время: 12:42. |