Спасибо! Разобрался сам.
Использую Multiple domains -
http://www.modxcms.de/multiple-domains-with-modx.html и Multi Lingual Site -
http://wiki.modxcms.com/index.php/Make_Multi_Lingual_Site. Вложенные ЧПУ.
Структура документов следующая:
|-> eng.site.lv (1) (alias = ’english’)
|-> page_1 (2)
|-> sub_page_1 (21)
|-> page_2 (3)
|-> rus.site.lv (101) (alias = ’russian’)
|-> page_1 (102)
|-> sub_page_1 (121)
|-> page_2 (103)
|-> sub_page_2 (131)
|-> www.site.lv (201) (alias = ’latvian’) (первая страница в конфигурации)
|-> page_1 (202)
|-> sub_page_1 (221)
|-> page_2 (203)
|-> sub_page_2 (231)
В ".htaccess" с помощью "modRewrite" переписывает URL:
#
RewriteRule ^latvian/?(.*)$ /index.html [NC]
RewriteRule ^russian/?(.*)$ /index.html [NC]
RewriteRule ^english/?(.*)$ /index.html [NC]
#
т.е. если зайти на
http://rus.site.lv откроется страница с alias = ’russian’, если зайти на
http://rus.site.lv/russian - alias = ’404’, если зайти на
http://rus.site.lv/page_1/sub_page_2 - alias = ’sub_page_2(131)’. Т.е. вырезаю alias языка из всех ссылок.
На каждой странице есть выбор языков, на которые можно переключиться. И если на другом языке такая страница существует - проблем нет - отображаю соответствующую страницу. Но если перевода нет, как с английской alias = ’sub_page_2’, хочу, чтобы при переключении на английский язык redirect отправлял на нужный мне документ. Т.е. я сам укажу при вызове snippet’а куда его перенаправлять (например [[snippet_redirect?id=`3`]]).
В snippet_redirect:
$url = $modx->makeUrl($id); для id=3 дает следующий результат: "$url = /page_2", затем я присваиваю полный путь:
$url = (
http://eng.site.lv + /page_2); получаю "$url =
http://eng.site.lv/page_2."
$modx->sendRedirect($url);
А перенаправление идет на
http://eng.site.lv/english/page_2/ и выдается соответственно 404. Если в $modx->sendRedirect($url) вместо $url ставлю ’
http://eng.site.lv/page_2’ срабатывает так как надо. Если перенаправляю на id=1 (101 или 201 - корневой документ) тоже все ok.
Никак не могу понять в чем дело, почему подставляет этот alias, откуда его берет. Как это обойти?