Убираем дубли в Joomla с ЧПУ (.htaccess + скрытая настройка)
Для тех, кто не хочет ставить тяжелые компоненты вроде sh404sef, ArtioSEF есть способ убрать основные дубли при помощи .htaccess
Во первых, убераем http://your-site/>index.php
RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [L,R=301]
Во вторых убираем:
http://your-site/statyi>
http://your-site/statyi/>
Получаем только:
http://your-site/statyi.html
RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(.*).html$ RewriteRule ^(.*[^/])$ $1.html [L,R=301]
Все вместе, вставляем после:
Такие строчки:
RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [L,R=301] RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /$ [NC] RewriteRule ^(.*)(/)$ $1 [L,R=301]] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(.*).html$ RewriteRule ^(.*[^/])$ $1.html [L,R=301]
Второе касается дублирование ссылок в статьях, ошибемся в адресе, например в место:
http://your-site/statyi/53->ochen-interesnaya-statya.html
напишем:
http://your-site/statyi/53->ochen-interesnaya.html
или:
http://your-site/statyi/53->ochen.html
или вообще:
http://your-site/statyi/53->какая-то-абракадабра.html
Все равно откроется наша страница!
Все из-за ID (в данном случае 53). Избавляемся от этого.
В файл:
корень_сайта/administrator/components/com_content/config.xml
Вставляем в удобное место (лучше с верху
<field name="sef_advanced_link" type="radio" default="1" label="SEF: ID статьи в URL" description="Показать ID статьи в URL?"> <option value="1">JNO</option> <option value="0">JYES</option> </field>
В админке, в менеджере материалов заходим в настройки (она справа вверху). Во всплывающем окне ищем новый параметр SEF: ID статьи в URL.
К стати, за одно избавитесь от этого ID в URL.
Только все алиасы на сайте должны быть разные, если Вы введете одинаковые алиасы, система Вас не предупредит! Но сайт выдаст 404!
P.S. Если некоторые старые страницы будут отдавать 404 ошибку, поправьте файл:
корень_сайта/components/com_content/router.php
Замените код:
// then we assume it is a category. If they don't we assume it is an article if ($count === 1) {
//then we assume it is a category. If they don't we assume it is an article if ($count === 1 && !$advanced) {