We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6997
    • 1 Posts
    Спасибо! Разобрался сам.


    Использую 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, откуда его берет. Как это обойти?