On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Здрасти,

    Ситуацията е следната работя сайт на локална машина в XAMPP и версия 1.0.2 на MODX, но когато прехвърлих нещата на хостинга се оказа, че URL-ите не работят както трябва.

    Настройвах гласих и в крайна сметка установих, че ако примерно URL-а на страницата е:

    www.domain.com/аз-правя-нещо/ама-много-добре - тогава не работи, но ако е

    www.domain.com/аз-правя-нещо/afasf-ама-много-добре, т.е. има латински букви в началото на URL се отваря страницата.

    Нещо ми намирисва на грешка в енкодинг на сървър или някаква настройка, но не знам от къде да подхвана нещата.

    Идей?

    Допълвам:

    Установих, че когато се изключи опцията "Use Friendly URL alias path", т.е. е на NO нещата сработват. Но този начин не ме устройва.
    • Last Of The Romans Reply #2, 10 years ago
      според мен от гледна точка на seo е по-добре да ти бъдат на латиница smiley
      * а още по-добре ако са ти на английски *
      / може да се развие дискусия по темата /
        palma non sine pulvere
      • Lyubomir Kolev Reply #3, 10 years ago
        Кристалин е направил добро предложение!

        Защп да е на латиница?
        Защото смесването на латиница и кирилица в адреса не е никак за предпочитане - ред причини, а пък и изглежда странно и смешно...

        Но най-вече заради механизма на "разчитане" на Френдли УРЛ (ФУРЛ).
        Когато имаме включени ФУРЛ в Конфигурацията, то означава, че адресите на страниците ще са четими, като наименованието на документа е полето "alias". В Конфигурацията са включени няколко параметъра, които са от значение - префикс, суфикс, дублиране...
        Когато ползваме ФУРЛ, то използваме файл .htaccess:

        # For Friendly URLs
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]


        Тази част ни отвежда към правилния номер на страницата която отваряме.
        Механизма за разчитане (на база параметрите по-горе) е записан в ядрото на системата.
        Поради няколко причини, не е коректно да се променя самото ядро - няй-малко след ъпдейт промените ще липсват...
        За това препоръчвам да се създават страниците на латиница - това означава САМО полето "alias" на документа да е на латиница.
        Генерирането на страници може да стане по различни начини, но е добре в инструмента който се ползва (NewsEditor, NewsPublisher) да се вмъкне функция:

        function do_translit($st) {
            $replacement = array(
                "й"=>"i","ц"=>"c","у"=>"u","к"=>"k","е"=>"e","н"=>"n",
                "г"=>"g","ш"=>"sh","щ"=>"sh","з"=>"z","х"=>"x","ъ"=>"\'",
                "ф"=>"f","ы"=>"i","в"=>"v","а"=>"a","п"=>"p","р"=>"r",
                "о"=>"o","л"=>"l","д"=>"d","ж"=>"zh","э"=>"ie","ё"=>"e",
                "я"=>"ya","ч"=>"ch","с"=>"c","м"=>"m","и"=>"i","т"=>"t",
                "ь"=>"\'","б"=>"b","ю"=>"yu",
                "Й"=>"I","Ц"=>"C","У"=>"U","К"=>"K","Е"=>"E","Н"=>"N",
                "Г"=>"G","Ш"=>"SH","Щ"=>"SH","З"=>"Z","Х"=>"X","Ъ"=>"\'",
                "Ф"=>"F","Ы"=>"I","В"=>"V","А"=>"A","П"=>"P","Р"=>"R",
                "О"=>"O","Л"=>"L","Д"=>"D","Ж"=>"ZH","Э"=>"IE","Ё"=>"E",
                "Я"=>"YA","Ч"=>"CH","С"=>"C","М"=>"M","И"=>"I","Т"=>"T",
                "Ь"=>"\'","Б"=>"B","Ю"=>"YU",
            );
        
            foreach($replacement as $i=>$u) {
                $st = mb_eregi_replace($i,$u,$st);
            }
            return $st;
        }
        


        която да се вика при създаването на полето "alias". Например, в NewsEditor:

              // set alias name of document used to store articles
              if(!$aliastitle){
              	$alias = 'news-'.$createdon;
              }else {
                $alias = $modx->stripTags($_POST['pagetitle']);
                $alias = do_translit($alias);
                $alias = strtolower($alias);
                $alias = preg_replace('/&.+?;/', '', $alias); // kill entities
                $alias = preg_replace('/[^\.%a-z0-9 _-]/', '', $alias);
                $alias = preg_replace('/\s+/', '-', $alias);
                $alias = preg_replace('|-+|', '-', $alias);
                $alias = trim($alias, '-');
                $alias = 'news-'.$modx->db->escape($alias);
              }
        

        • Грешка в хостинг настройки

          референции, необходими за местните
          locale ru_RU.cp1251