Для тех, кто не хочет ставить тяжелые компоненты вроде 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]

 




Все вместе, вставляем после:

Код:
RewriteEngine On

Такие строчки:

Код:


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
Замените код:

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) {