Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как задавать многоязычность в URL (https://javascript.ru/forum/angular/39122-kak-zadavat-mnogoyazychnost-v-url.html)

Shitbox2 16.06.2013 23:31

Как задавать многоязычность в URL
 
Что из себя представляет URL на многоязычном сайте, понятно. Это в простом случае site.com/ru/page/123, в сложном site.ru/page/123 или ru.site.com/page/123.

Рассмотрим только простой случай. Сразу возникает вопрос, как обзывать ссылки?

Можно задать href="/{{langCode}}/page/{{item.id}}", но сразу возникает проблема откуда взять langCode. Придется пихать его в глобальную область видимости, что не хотелось бы. Более предпочтительный вариант: href="/page/{{item.id}}" Но тогда другой вопрос, как это обрабатывать в роутере? Пока терзаю ui-Router но еще не разобрался что там к чему.

Что посоветуете?

Shitbox2 17.06.2013 04:03

Добавка по теме:
Пытаюсь перейти в режим HTML5, записал
$locationProvider.html5Mode(true).hashPrefix('!');

и в .htaccess
<IfModule mod_rewrite.c>   
  RewriteEngine on

  # if a directory or a file exists, use it directly
  RewriteCond %{REQUEST_FILENAME} -s [OR]
  RewriteCond %{REQUEST_FILENAME} -l [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule ^.*$ - [NC,L]

  # otherwise forward it to index.html 
  RewriteRule ^(.*) /#!/$1 [NC,L]
</IfModule>

Либо так (результат такой же)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /#!/$1 [NC,L]

Редирект вроде бы работает, т.е. ни 400 ни 500 ошибок не возникает, но в коде страницы хаос. В HEAD кусок ангуляровского кода, а все подключаемые скрипты переместились в BODY. При этом сервер подгружает их не из корневого каталога, а относительно пути из строки адреса, который принял за базовый

danik.js 17.06.2013 06:19

Цитата:

Сообщение от Shitbox2
RewriteRule ^(.*) /#!/$1 [NC,L]

Разве хэш составляющая отсылается браузером на сервер? Она же отображается только в адресной строке, не?

Shitbox2 17.06.2013 07:44

А ее и не надо отсылать. Смысл в том, чтобы сервер обычный УРЛ преобразовывал в УРЛ с хэшем и отсылал его таким клиенту, а клиент опять преобразует в нормальный УРЛ.

P.S. В общем, основная проблема в том, что все ссылки на ресурсы принимают вид site.ru/адрес по которому пришел пользователь/css/main.css Хотя на самом деле все лежит в корне site.ru/css/main.css


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