We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1436
    • 50 Posts
    Здраствуйте, Поставил на MODx Evo 1.0.2 плагин SEO Strict URLs. Все делал по инструкции с официального сайта. Желаемый результат — перенаправление со всех дублей страниц на страницу с суффикстом html почему то не был достигнут. Дубли страниц остались.
    http://www.oaokmo.ru/ru/catalogue/underground-equipment/blok-skreperniy.html
    и
    http://www.oaokmo.ru/ru/catalogue/underground-equipment/blok-skreperniy.html?q=ru/catalogue/underground-equipment/7225.html
    код плагина:

    // Strict URLs
    // version 1.0.1
    // Enforces the use of strict URLs to prevent duplicate content.
    // By Jeremy Luebke @ www.xuru.com
    // Contributions by Brian Stanback @ www.stanback.net
    
    // On Install: Check the "OnWebPageInit" & "OnWebPagePrerender" boxes in the System Events tab.
    // Plugin configuration: &editDocLinks=Edit document links;int;1 &makeFolders=Rewrite containers as folders;int;1 
    
    //&emptyFolders=Check for empty container when rewriting;int;0 &override=Enable manual overrides;int;0 
    
    //&overrideTV=Override TV name;string;seoOverride
    
    // For overriding documents, create a new template variabe (TV) named seoOverride with the following options:
    //    Input Type: DropDown List Menu
    //    Input Option Values: Disabled==-1||Base Name==0||Append Extension==1||Folder==2
    //    Default Value: -1
    
    //  # Include the following in your .htaccess file
    //  # Replace "example.com" &  "example\.com" with your domain info
    //  RewriteCond %{HTTP_HOST} .
    //  RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
    //  RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
    
    // Begin plugin code
    $e = &$modx->event;
    
    if ($e->name == 'OnWebPageInit') 
    {
       $documentIdentifier = $modx->documentIdentifier;
    
       if ($documentIdentifier)  // Check for 404 error
       {
          $myProtocol = ($_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
          $s = $_SERVER['REQUEST_URI'];
          $parts = explode("?", $s);  
    
          $alias = $modx->aliasListing[$documentIdentifier]['alias'];
          if ($makeFolders)
          {
             if ($emptyFolders)
             {
                $result = $modx->db->select('isfolder', $modx->getFullTableName('site_content'), 'id = ' . 
    
    $documentIdentifier);
                $isfolder = $modx->db->getValue($result);
             }
             else
             {
                $isfolder = (count($modx->getChildIds($documentIdentifier, 1)) > 0) ? 1 : 0;
             }
          }
    
          if ($override && $overrideOption = $modx->getTemplateVarOutput($overrideTV, $documentIdentifier))
          {
             switch ($overrideOption[$overrideTV])
             {
                case 0:
                   $isoverride = 1;
                   break;
                case 1:
                   $isfolder = 0;
                   break;
                case 2:
                   $makeFolders = 1;
                   $isfolder = 1;
             }
          }
    
          if ($isoverride)
          {
             $strictURL = preg_replace('/[^\/]+$/', $alias, $modx->makeUrl($documentIdentifier));
          }
          elseif ($isfolder && $makeFolders)
          {
             $strictURL = preg_replace('/[^\/]+$/', $alias, $modx->makeUrl($documentIdentifier)) . "/";
          }
          else
          {
             $strictURL = $modx->makeUrl($documentIdentifier);
          }
    
          $myDomain = $myProtocol . "://" . $_SERVER['HTTP_HOST'];
          $newURL = $myDomain . $strictURL;
          $requestedURL = $myDomain . $parts[0];
    
          if ($documentIdentifier == $modx->config['site_start'])
          {
             if ($requestedURL != $modx->config['site_url'])
             {
                // Force redirect of site start
                header("HTTP/1.1 301 Moved Permanently");
                $qstring = preg_replace("#(^|&)(q|id)=[^&]+#", '', $parts[1]);  // Strip conflicting id/q from query 
    
    string
                if ($qstring) header('Location: ' . $modx->config['site_url'] . '?' . $qstring);
                else header('Location: ' . $modx->config['site_url']);
                exit(0);
             }
          }
          elseif ($parts[0] != $strictURL)
          {
             // Force page redirect
             header("HTTP/1.1 301 Moved Permanently");
             $qstring = preg_replace("#(^|&)(q|id)=[^&]+#", '', $parts[1]);  // Strip conflicting id/q from query string
             if ($qstring) header('Location: ' . $strictURL . '?' . $qstring);
             else header('Location: ' . $strictURL);
             exit(0);
          }
       }
    }
    elseif ($e->name == 'OnWebPagePrerender')
    {
       if ($editDocLinks)
       {
          $myDomain = $_SERVER['HTTP_HOST'];
          $furlSuffix = $modx->config['friendly_url_suffix'];
          $baseUrl = $modx->config['base_url'];
          $o = &$modx->documentOutput; // get a reference of the output
    
          // Reduce site start to base url
          $overrideAlias = $modx->aliasListing[$modx->config['site_start']]['alias'];
          $overridePath = $modx->aliasListing[$modx->config['site_start']]['path'];
          $o = preg_replace("#((href|action)=\"|$myDomain)($baseUrl)?($overridePath/)?$overrideAlias$furlSuffix#", '${1}' 
    
    . $baseUrl, $o);
    
          if ($override)
          {
             // Replace manual override links
             $sql = "SELECT tvc.contentid as id, tvc.value as value FROM " . $modx->getFullTableName('site_tmplvars') . " 
    
    tv ";
             $sql .= "INNER JOIN " . $modx->getFullTableName('site_tmplvar_templates') . " tvtpl ON tvtpl.tmplvarid = 
    
    tv.id ";
             $sql .= "LEFT JOIN " . $modx->getFullTableName('site_tmplvar_contentvalues') . " tvc ON tvc.tmplvarid = tv.id 
    
    ";
             $sql .= "LEFT JOIN " . $modx->getFullTableName('site_content') . " sc ON sc.id = tvc.contentid ";
             $sql .= "WHERE sc.published = 1 AND tvtpl.templateid = sc.template AND tv.name = '$overrideTV'";
             $results = $modx->dbQuery($sql);
             while ($row = $modx->fetchRow($results))
             {
                $overrideAlias = $modx->aliasListing[$row['id']]['alias'];
                $overridePath = $modx->aliasListing[$row['id']]['path'];
                switch ($row['value'])
                {
                   case 0:
                      $o = 
    
    preg_replace("#((href|action)=\"($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffi
    
    x#", '${1}' . $overrideAlias, $o);
                      break;
                   case 2:
                      $o = 
    
    preg_replace("#((href|action)=\"($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffi
    
    x/?#", '${1}' . rtrim($overrideAlias, '/') . '/', $o);
                      break;
                }
             }
          }
    
          if ($makeFolders)
          {
             if ($emptyFolders)
             {
                // Populate isfolder array
                $isfolder_arr = array();
                $result = $modx->db->select('id', $modx->getFullTableName('site_content'), 'published > 0 AND isfolder > 
    
    0');
                while ($row = $modx->db->getRow($result))
                   $isfolder_arr[$row['id']] = true;
             }
    
             // Replace container links
             foreach ($modx->documentListing as $id)
             {
                if ((is_array($isfolder_arr) && isset($isfolder_arr[$id])) || count($modx->getChildIds($id, 1)))
                {
                   $overrideAlias = $modx->aliasListing[$id]['alias'];
                   $overridePath = $modx->aliasListing[$id]['path'];
                   $o = 
    
    preg_replace("#((href|action)=\"($baseUrl)?($overridePath/)?|$myDomain$baseUrl$overridePath/?)$overrideAlias$furlSuffi
    
    x/?#", '${1}' . rtrim($overrideAlias, '/') . '/', $o);
                }
             }
          }
       }
    }



    код в .htaccess :

    # Rewrite domain.com -> www.domain.com -- used with SEO Strict URLs plugin
    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} !^www\.oaokmo\.ru [NC]
    RewriteRule (.*) http://www.oaokmo.ru/$1 [R=301,L]
    
    # For Friendly URLs
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=ru [L,QSA]


    кто занет помогите разобраться