Здравствуйте, Хаброжители!
Сегодня я расскажу вам, как же все таки убрать слэш в конце 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 строка) которая должна выглядеть вот так:
Меняем код этой функции на вот этот:
Теперь все URL который будут строиться при помощи функции getUrl() будут без слэша в конце.
Отлично, полпути пройдено. Дальше нам нужно будет отредактировать .htaccess, и добавить 301 редирект со страниц со слэшем на страницы без слэша.
Итак, ищем в файлике .htaccess вот такую строку:
Сразу после нее добавляем вот эти строки:
И собственно все. Теперь вы можете спась спокойно, и не бояться того, что великий бог поисковиков разгневается на вас из-за дубликатов страниц.
P.S.: На всякий случай напомню, что если магазин multi-store, то .htaccess нужно править для каждого магазина.
Сегодня я расскажу вам, как же все таки убрать слэш в конце 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 нужно править для каждого магазина.