Инфо Убираем дубли в Joomla с ЧПУ (.htaccess + скрытая настройка)

prosto-chups

ВТР
Регистрация
3 Фев 2009
Сообщения
252
Реакции
167
Для тех, кто не хочет ставить тяжелые компоненты вроде sh404sef, ArtioSEF есть способ убрать основные дубли при помощи .htaccess

Во первых, убераем Для просмотра ссылки Войди или Зарегистрируйсяindex.php
Код:
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]
Все вместе, вставляем после:
Код:
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]


Второе касается дублирование ссылок в статьях, ошибемся в адресе, например в место:
Для просмотра ссылки Войди или Зарегистрируйсяochen-interesnaya-statya.html
напишем:
Для просмотра ссылки Войди или Зарегистрируйсяochen-interesnaya.html
или:
Для просмотра ссылки Войди или Зарегистрируйсяochen.html
или вообще:
Для просмотра ссылки Войди или Зарегистрируйсякакая-то-абракадабра.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) {
 
это для стандартных материалов Joomla. А если весь контент построен на Zoo - не подскажите как отредактировать .htaccess?
 
.htaccess подойдет и для ZOO и для K2
 
Спасибо за информацию. Хотя, честно говоря, не знаю, что лучше - воспользоваться данным методом, или просто поставить что то типа Shnodoubles.
 
Спасибо за информацию. Хотя, честно говоря, не знаю, что лучше - воспользоваться данным методом, или просто поставить что то типа Shnodoubles.
На сколько я помню, Shnodoubles только для J1.5...
Я, например, считаю, что чем меньше плагинов включено, тем лучше... Зачем создавать лишнюю нагрузку на сайт (движек), делать лишние запросы в базу, реплейсы и т.д.
Этот метод не дает лишней нагрузки...
 
Сейчас Shnodoubles есть и для 2.5. Но по поводу нагрузки да, полностью согласен!
 
А как быть с ссылками в меню? Например, со ссылками на категории? Алиасам также дописывается ".html" и в итоге по ссылке получается ошибка 404.
 
А как быть с ссылками в меню? Например, со ссылками на категории? Алиасам также дописывается ".html" и в итоге по ссылке получается ошибка 404.
К ссылкам меню (алиасам) тоже дописывается .html, но это не создает ошибку, а наоборот помогает избавиться от двух дублей. Как раз это я и писал:
Во вторых убираем:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Получаем только:
Для просмотра ссылки Войди или Зарегистрируйся
 
Возможно, всему виной фреймворк JAT3v2 от JOOMLART, но по нажатии на ссылки в меню, к алиасу действительно добавляется .html и это вызывает ошибку 404. В случае с материалами все замечательно, но вот категории (и блоки, и списки) - все "падают" :(
 
Никогда не пользовался JAT3v2, по этому точно сказать не могу, вполне возможно, что он как-то влияет на ссылки. С другими компонентами работает на ура, проверял на многом. При чем все равно, сайт на Денвере или нет, тоже проверял.

Полезная статья, единственное жаль что не распространится на другие компоненты аля виртумарта и т.д.
Почему не распространяется? С VirtueMart как раз на ура работает! Да и с другими компонентами тоже! Была обнаружена проблема только с JAT3v2.
 
Назад
Сверху