We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6623
    • 127 Posts
    Как? Надо чтобы url-ы были не http://host.ru/index.php?id=1 а /index.php?id=1.
    Где-то встречал что все урлы делаются через makeUrl() но его изменение (удаление $host из return) не помогло. Что самое странное, дак это то что его изменение вообще никак не влияло. В общем вопрос, может есть что нить без изменения кода makeUrl()?
      • 785
      • 2,113 Posts
      По умолчанию как раз все адреса относительные, а начало URL добавляется на основе base href. Адреса типа /index.php?id=1 не относительные, а абсолютные. А по вопросу – что значит «надо»? URL создается разными сниппетами или непосредственно парсером, и в каждом случае приемы свои. То есть, изменение особенностей генерации URL, например, в Breadcrumbs и Wayfinder могут различаться.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 6623
        • 127 Posts
        Quote from: AKots at May 18, 2010, 04:08 AM

        По умолчанию как раз все адреса относительные, а начало URL добавляется на основе base href. Адреса типа /index.php?id=1 не относительные, а абсолютные. А по вопросу – что значит «надо»? URL создается разными сниппетами или непосредственно парсером, и в каждом случае приемы свои. То есть, изменение особенностей генерации URL, например, в Breadcrumbs и Wayfinder могут различаться.
        Абсолютные url это те, которые содержат часть http://host.ru, остальные это относительные, как минимум относительны они по директории. Но это не важно для вопроса, есть пример, вы поняли что мне нужно.
        Вызов [[Wayfinder? &startId=`1` ]] возвращает хтмл, причем [+wf.link+] содержит base href из-за чего возникает, иногда, ситуация когда ссылка содержит то www.host.ru, то host.ru(без www). Из-за этого иногда возникает проблема с авторизацией, с плейлистами для плеера. Собственно поэтому и "надо" что бы Wayfinder и ditto возвращали адрес без хоста. Смотрел код makeUrl, да, там есть sheme=’full’. Можно это все изменить, но не хочу изменять код, т.к. в дальнейшем не факт что вспомню о изменениях...
          • 7368
          • 264 Posts
          ситуация когда ссылка содержит то www.host.ru, то host.ru(без www).

          Намного лучше и проще избавится от этой ситуации, чем хакать код! Или Вы из тех, кто "не ищет лёгких путей"? smiley
            • 22668
            • 718 Posts
            Я в такой ситуации использую htaccess. (чтобы небыло проблем с www и без)
              • 785
              • 2,113 Posts
              Quote from: DAS at May 18, 2010, 05:19 AM

              Абсолютные url это те, которые содержат часть http://host.ru, остальные это относительные
              Вообще-то абсолютные URL-адреса всегда точно указывают на страницу, независимо от места расположения исходного документа, а в относительных URL-адресах расположение целевого документа указывается относительно папки, содержащей исходный документ. Соответственно /name вне зависимости от того, где находится исходный документ, всегда указывают на корень сайта – это и есть абсолютный адрес. Хотя, действительно, есть еще «более абсолютные» адреса, где явно указан адрес корня сайта, их иногда называют полными.
              Я по решению проблемы – в Wayfinder достаточно добавить &fullLink=`1`, в Ditto в чанке можно поставить <a href="[(base_url)][~[+id+]~]">, но лучше, как уже упоминалось выше, исправить .htaccess, чтобы обращение к сайту велось единообразно.

              Есть еще способ «для извращенцев» – в шаблоне писать не <base href="[(site_url)]" />, а <base href="[!Base!]" /> и создать такой сниппет Base:

              <?php
              return $modx->config[’site_url’];
              ?>
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 6623
                • 127 Posts
                Quote from: Kollad at May 18, 2010, 05:44 AM

                ситуация когда ссылка содержит то www.host.ru, то host.ru(без www).
                Намного лучше и проще избавится от этой ситуации, чем хакать код! Или Вы из тех, кто "не ищет лёгких путей"? smiley
                может дочитаете первый пост до конца? А именно:
                Quote from: DAS at May 18, 2010, 02:59 AM

                В общем вопрос, может есть что нить без изменения кода makeUrl()?

                Сделал на htaccess. Спасибо
                  • 6623
                  • 127 Posts
                  Не, посмотрев результаты возвращаемые makeUrl()-ом убедился что он отдает адрес без http://host.ru (как мне и надо). Новая задача: сайт мультиязычный(YAMS), следовательно все ссылки делает ямс. Значит и http://host.ru дописывает он. Кто нить знает как сказать ямсу что этого делать не надо.
                  P.S. редирект на www хоть и решает проблему, но мне не нравиться, возможно напрасно...
                    • 6623
                    • 127 Posts
                    Нашел в yams->ConstructURL() кусок отвечающий за это
                    // Get the servername and port
                    			$isHTTPS = $this->IsHTTPS();
                    			if ( $isHTTPS )
                    			{
                    				$protocol = 'https://';
                    			}
                    			else
                    			{
                    				$protocol = 'http://';
                    			}
                    			//      $stripPort =
                    			//        ( $_SERVER['SERVER_PORT'] != 80 )
                    			//        && ( ! $isHTTPS );
                    			$serverNameAndPort = $this->GetActiveServerName(
                    			$langId
                    			//        , $stripPort
                    			);

                    И увы, но там нет никаких директив для задания того, что бы хост не добавлялся sad
                    Как сказывается на админке то что я пропишу редирект с host.ru на www. host .ru ? Вернее поставлю в htaccess(в директории manager) RewriteEngine On ?
                    P.S. htaccess :
                    RewriteEngine on
                    RewriteCond %{HTTP_HOST} ^host.ru [NC]
                    RewriteRule ^(.*)$ http://www.host.ru/$1 [L,R=301]