Как задавать многоязычность в 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 но еще не разобрался что там к чему. Что посоветуете? |
Добавка по теме:
Пытаюсь перейти в режим 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. При этом сервер подгружает их не из корневого каталога, а относительно пути из строки адреса, который принял за базовый |
Цитата:
|
А ее и не надо отсылать. Смысл в том, чтобы сервер обычный УРЛ преобразовывал в УРЛ с хэшем и отсылал его таким клиенту, а клиент опять преобразует в нормальный УРЛ.
P.S. В общем, основная проблема в том, что все ссылки на ресурсы принимают вид site.ru/адрес по которому пришел пользователь/css/main.css Хотя на самом деле все лежит в корне site.ru/css/main.css |
| Часовой пояс GMT +3, время: 13:05. |