Здравствуйте, Хаброжители!

Сегодня я расскажу вам, как же все таки убрать слэш в конце URL, не навредив работе магазина.

Для чего это нужно:

Для сервера mydomain.com/category и mydomain.com/category/ это одно и то же. Но для поисковых систем это две разные страницы с одинаковым контентом. И это не есть хорошо. Те сайты, которые уличены в такой, казалось бы мелочи, начинают падать в самый низ поисковых рейтингов.

Что нужно делать:

К сожалению, что бы исправить это недуг в Magento, нам придется перезаписать один файл ядра. Других способов решения проблемы я не нашел. Для начала нам нужно немного исправить функцию getUrl(), чтобы в генерируемых URL не было замыкающего слэша. Для того, чтобы не вносить изменения в само ядро (что черевато потерей всего custom функционала при обновлении Magento) копируем файл app/code/core/Mage/Core/Block/Abstract.php в app/code/local/Mage/Core/Block/Abstract.php. В файле app/code/local/Mage/Core/Block/Abstract.php находим функцию getUrl() (941 строка) которая должна выглядеть вот так:

public function getUrl($route = '', $params = array())
    {
        return $this->_getUrlModel()->getUrl($route, $params);
    }

Меняем код этой функции на вот этот:
public function getUrl($route = '', $params = array())
    {
        $return_url = $this->_getUrlModel()->getUrl($route, $params);
        if ($return_url != $this->getBaseUrl() && substr($return_url, -1) == '/' && !Mage::getSingleton('admin/session')->isLoggedIn()):
            return substr($return_url, 0, -1);
        else:
            return $return_url;
        endif;
    }

Теперь все URL который будут строиться при помощи функции getUrl() будут без слэша в конце.
Отлично, полпути пройдено. Дальше нам нужно будет отредактировать .htaccess, и добавить 301 редирект со страниц со слэшем на страницы без слэша.
Итак, ищем в файлике .htaccess вот такую строку:
 RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

Сразу после нее добавляем вот эти строки:
RewriteCond %{request_method} ^GET$
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)$ %1 [L,R=301]

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

P.S.: На всякий случай напомню, что если магазин multi-store, то .htaccess нужно править для каждого магазина.