We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 785
    • 2,113 Posts
    Заметил тут один глюк

    Если захожу на сайт как www.<адрес сайта>, то все ссылки строятся как www.<адрес сайта>/<ссылка>, а если просто как <адрес сайта>, то ссылка получается как <адрес сайта>/<ссылка>. Пока все правильно. Но тут заметил, что зайдя как <адрес сайта> увидел на некоторых страницах ссылки www.<адрес сайта>/<ссылка>. Почистил кэш – все прошло, но до первого кэширования страницы. Получается, вид ссылок зависит от того, как зашел первый посетитель – с www или без.

    На хостинге для www прописана запись типа A в настройках DNS, указывающая туда же, что и без.

    Кстати, еще одна замеченная мелочь. Есть, например у меня страница <адрес сайта>/<псевдоним>, у которой ID равен <число>. При вводе адреса <адрес сайта>/<число> страница также открывается, хотя мне это вроде бы и не надо. Я понимаю, что явно указывая id=<число> в адресе ссылаюсь на страницу, но когда просто указываю число без id=, это как-то неправильно.
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
      • 22301
      • 1,084 Posts
      надо в .htaccess прописать

      RewriteCond %{HTTP_HOST} !^site.ru$
      RewriteRule ^ http://site.ru%{REQUEST_URI} [R=301,L]


        [img]http://jurist-info.ru/pic/rrr.jpg[/img]

        Безжалостный пияр!
        Artima -- неуч!
        Осторожно: преступная локализация -- modx-cms.ru
        Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

        Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
        • 22301
        • 1,084 Posts
        добавление важное:

        файл в корне сайтa должен быть .htaccess

        а в нём вот такое полностью
        php_flag zlib.output_compression On
        php_value zlib.output_compression_level 5
        php_flag register_globals off
        
        RewriteEngine On
        
        RewriteBase /
        
        RewriteCond %{HTTP_HOST} !^site.ru$
        RewriteRule ^ http://site.ru%{REQUEST_URI} [R=301,L]
        
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        
        RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
          [img]http://jurist-info.ru/pic/rrr.jpg[/img]

          Безжалостный пияр!
          Artima -- неуч!
          Осторожно: преступная локализация -- modx-cms.ru
          Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

          Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
          • 785
          • 2,113 Posts
          Редирект – не совсем то, что хотелось бы. При применении .htaccess просто набирающий www.<адрес сайта> никогда эту команду не увидит в адресной строке, так как будет перенаправлен на <адрес сайта>. А мне хочется, чтобы тот, кто набрал www.<адрес сайта> так и ходил бы по всему сайту, причем все адреса начинались бы с www. Если же вошедший не набрал www, то при путешествии по сайту он не попадал бы на страницы с www.
          Это получается, если не кэшировать страницы, значит, что что-то не то в алгоритме кэширования. Использую 0.9.6 и по некоторым причинам на следующую версию пока не хочу переходить. Может кто-то в курсе, что и где можно поправить?

          Кстати, я не особенно разбираюсь в .htaccess, но в файле, входящем в состав MODx, немного другие команды для решения той же проблемы:
          # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
          #RewriteCond %{HTTP_HOST} .
          #RewriteCond %{HTTP_HOST} !^example-domain-please-change\.com [NC]
          #RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L]

          Может кто-то подскажет, чем это решение отличается от предложенного выше?
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 22301
            • 1,084 Posts
            уже не помню, как с 096 дела обстояли, но на 095 был необходим такой плугин
            http://modxcms.com/SEO-Strict-URLs-1.0.1-1408.html

            Я вообще не разбираюсь в том, что в .htaccess понаписано:) когда я столкнулся с аналогичной твоей проблемой, то просто почитал документацию в инете, сделал так, чтобы работало, как мне хочется, и забыл:)

            сайт должен быть либо только с www либо без.

            и такой момент: любой поисковик съест 2 (два) сайта, и ещё не известно, как скоро зеркала срастутся в базе, срастутся ли вообще, и поисковики не любят зеркала. есть риск, что вообще ни один сайт не будет полностью проиндексирован корректно, при этом какие-то страницы будут проиндексированы дважды, а какие-то не попадут в поиск ни в одном из вариантов. я вот по этим причинам заморочился в своё время.

            машинка кеширует страницу из базы один раз, и будет она с префиксом или нет, зависит от того, с какого адреса на неё впервые зашли (до очистки кеша, понятное дело). и тут всё корректо, увеличивать кеш вдвое ни к чему.

            upd: проблема с Яндексом очень частично решается директивой host в robots.txt.
              [img]http://jurist-info.ru/pic/rrr.jpg[/img]

              Безжалостный пияр!
              Artima -- неуч!
              Осторожно: преступная локализация -- modx-cms.ru
              Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

              Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
              • 785
              • 2,113 Posts
              Quote from: openagate at Feb 02, 2008, 11:13 AM

              уже не помню, как с 096 дела обстояли, но на 095 был необходим такой плугин
              Он, вроде бы, действительно вместо <адрес сайта>/<число> переадресует на <адрес сайта>/<псевдоним>. Но меня больше первый вопрос интересует.

              Мне, например, не нравится, когда я ввожу адрес сайта, с www, а кто-то (система) принудительно убирает www. И наоборот. А о росте кэша – по хорошему должен предоставляться выбор. Кому-то важно меньше места тратить, а кому-то нужно, чтобы адреса не менялись.

              Кстати, а если у меня припарковано несколько доменов, типа мой_сайт.ru и чужой_сайт.com указывают на одну и ту же папку. И нужно, чтобы посетители не знали, что у сайта есть еще и псевдоним. А при кэшировании адреса будут случайным образом меняться, что совсем плохо. С мой_сайт.ru/начало перейду на чужой_сайт.com/продолжение а потом на мой_сайт.ru/окончание. Бред какой-то получается.

              А с поисковиками в действительности нет проблем, но это отдельный разговор.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 22301
                • 1,084 Posts
                про поисковики без проблем я бы здесь не отказался хоть от небольшого комментария. на абзац...

                насчёт выбора. мне трудно судить, скольким разработчикам должно сие понадобиться, чтоб над этим заморочиться, но один человек им явно погоды не делает. хотя, можно порыскать по инофорумам, вдруг там проблема поднималась и как-то решалась.

                с точки зрения сервака, думаю, иметь 2 сайта на одном хосте -- это не то же самое, что два домена, припаркованные к одной папке. пивасик не позволяет сейчас лезть и смотреть, а как же там система кэширования работает.. скорее всего, там идёт привязка к хосту. проблем с двумя и более одинаковыми сайтами на одну папку не возникало.
                  [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                  Безжалостный пияр!
                  Artima -- неуч!
                  Осторожно: преступная локализация -- modx-cms.ru
                  Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                  Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                  • 23695
                  • 230 Posts
                  AKots эти ссылки где находятся, их рисует сниппет или кто-то в редакторе написал? если в редакторе то там в настройках у него есть Path Options с параметрами:rootrelative,docrelative,fullpathurl, по умолчанию он стоит как надо docrelative. Не уверен что это именно относится к ссылкам создаваемым в редакторе, но вроде оно. Но опять же, если кто-то руками ставит ссылки в редакторе, тут ничего не поможет.
                    • 22301
                    • 1,084 Posts
                    AKots, попробуй сделать так:

                    в шапке вставить
                    <base href="[[base]]">


                    код base что-то типа
                    echo "http://";
                    echo $_SERVER['HTTP_HOST']; 
                    echo "/";

                      [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                      Безжалостный пияр!
                      Artima -- неуч!
                      Осторожно: преступная локализация -- modx-cms.ru
                      Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                      Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                      • 785
                      • 2,113 Posts
                      Quote from: PoMeO at Feb 02, 2008, 04:43 PM

                      AKots эти ссылки где находятся, их рисует сниппет или кто-то в редакторе написал?
                      Это автоматически генерируемые разными сниппетами ссылки (например, в меню).

                      Quote from: openagate at Feb 02, 2008, 06:57 PM

                      AKots, попробуй сделать так:
                      Это частично помогло – спасибо.

                      В шаблоне вместо <base href="[(site_url)]" /> поставил <base href="[!basehref!]" /> и создал сниппет basehref:
                      <?php
                      return $modx->config['site_url'];
                      ?> 

                      Вроде в основном заработало именно так, как хотелось, но не без проблем. Breadcrumbs и Wayfinder ссылки на корень сайта генерируют абсолютные, так что пришлось их в шаблоне вызывать некэшируемыми, что не совсем хорошо. В принципе можно в их коде кое-что поменять, но это тоже некрасиво. Возможны также проблемы с кэшированием других сниппетов, в которых стоит вызов site_url.

                      То есть в действительности проблема в том, что site_url не нужно кэшировать.
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации