Вопрос Вопрос по Url-ам как убить длинные

Тема в разделе "Joomla и SEF (ЧПУ)", создана пользователем zzzerocoolll, 03.07.2015.

  1. Offline

    zzzerocoolll Пользователь

    Регистрация:
    04.06.2009
    Сообщения:
    41
    Симпатии:
    0
    Пол:
    Мужской
    Привет. Последняя джумла 3.4. Голая стоковая без дополнительных компонентов.
    Включено стандартное чпу.
    Пример
    sait.ru/price.html
    и
    sait.ru/index.php?option=com_content&view=article&id=1 как сделать чтобы при переходе по длинной ссылке,, в браузере либо выдавало 404, либо имело вид sait.ru/price.html ??
     
  2.  
  3. Asylum
    Offline

    Asylum Местный => Cпециалист <=

    Регистрация:
    09.02.2007
    Сообщения:
    2 744
    Симпатии:
    160
    Пол:
    Мужской
    Как то много вопросов на эту тему,дублирую с другого форума
    Много вопросов по редиректам, устроим мини-фак раз уж поиском не пользуетесь.

    Для начала включаем SEF (ЧПУ) в глобальных настройках и Перенаправление URL, далее файл htaccess.txt, который лежит в корне (увидите его когда по FTP зайдете), переименовываем в .htaccess (точка в начале), как раз в нем и будет работать.

    Пояснение: 301 редирект (постоянное перенаправление с одного адреса на другой) используют для склейки url адресов, если страница изменила свой адрес или у одного документа имеется полный дубль по другому адресу.

    Примеры:
    1. У главной страницы сайта site.ru всегда присутствует полный ее дубль по адресу site.ru/index.php
    Используем код для перенаправления:
    Код:
    Redirect 301 /index.php http://site.ru/
    или
    Код
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://site.ru/ [R=301,L]

    2. Если у вашего сайта несколько имен, но вы хотите, чтобы пользователи всегда видели в адресной строке основное имя сайта, используйте следующие строки сразу после RewriteEngine On:
    Код
    RewriteCond %{HTTP_HOST} !^site.ru$
    RewriteRule ^(.*) http://site.ru/$1 [R=301,L]

    2.1 Редирект с www на без www
    Код
    RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
    RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

    2.2 Редирект без www на www
    Код
    RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
    RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

    3. 301 редирект на окончание .html (для тех у кого включен этот суффикс), перенаправит со страниц site.ru/article и site.ru/article/ на страницу site.ru/article.html
    Код
    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
    RewriteRule .* %1.html [R=301,L]
    RewriteRule ^(.*)/$ /$1.html [R=301,L]

    Или
    Код
    REDIRECTMATCH 301 (.*/[^/.]+)($|\?)$ http://site.ru$1.html

    4. Редирект с .html на без .html, т.е. с site.ru/article.html на site.ru/article (для тех кто сначала включил .html, а потом решил избавиться от него)
    Код
    RewriteBase /
    RewriteRule (.*)\.html$ $1 [R=301,L]

    Или
    Код:
    REDIRECTMATCH 301 (.*)\.html$ http://site.ru$1

    5. Редирект для страниц с параметрами, например со страницы site.ru/blog?limitstart=0 на site.ru/blog
    Код
    RewriteCond %{QUERY_STRING} ^limitstart=0
    RewriteRule ^blog http://site.ru/blog? [R=301,L]

    Редирект с ?limitstart=0 без указания категории:
    Код:
    RewriteCond %{QUERY_STRING} ^limitstart=0$ [NC]
    RewriteRule (.*) $1? [R=301,L]

    6. И еще допустим поменяли структуру и нужно чтобы все страницы старого раздела перенаправлялись на те же страницы только нового раздела, например site.ru/blog/raznoe/article на site.ru/blog/article
    Код
    RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]

    7. 301 редирект с адреса без слеша на слеш, то есть с site.ru/article на site.ru/article/
    Код
    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
    RewriteRule .* %1/ [R=301,L]

    8. Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article
    Код
    RewriteRule ^(.*)/$ /$1 [R=301,L]

    еще вариант как избавиться от завершающего слеша на конце
    Код
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ /$1 [R=301,L]

    вариант избавления от слэша для страниц с параметрами, на примере страниц с пагинацией site.ru/categoriya?start=5/
    Код:
    RewriteCond %{QUERY_STRING} ^start=(\d+)/
    RewriteRule ^(.*) /$1?start=%1 [R=301,L]

    9. Сначала забыли включить SEO в глобальных настройках, а потом включили, как итог - в индексе много документов с /index.php в адресе. Избавиться можно так -
    Код
    RewriteRule ^index.php/(.*)$ http://mysite.ru/$1 [R=permanent,L]
    - по такому же принципу можно избавиться от какой либо вложенности, например редиректить с site.ru/ru/catalog на site.ru/catalog (/ru/ убирается)

    10. Запрет доступа для плохих ботов
    пример №1

    пример №2

    11. Редирект без указания домена (удобно при переносе сайта на другой домен)

    Код
    RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
    RewriteRule ^oldpage$ http://%1/newpage$1 [R=301,L]
     

Поделиться этой страницей

Загрузка...