Форум русской поддержки Joomla!® CMS
06.12.2016, 19:59:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Сокращение пути, редирект с категорий, как в htaccess сделать?

 (Прочитано 785 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« : 05.10.2015, 00:30:02 »

Нашел полно информации как удалять index, HTML, / и прочие.

А как сократить путь к статье? Что прописать в htaccess, чтобы вместо
сайт.ру/категория/подкатегория/id-материал
было
сайт.ру/id-материал
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #1 : 05.10.2015, 01:21:05 »

Нашел полно информации как удалять index, HTML, / и прочие.

А как сократить путь к статье? Что прописать в htaccess, чтобы вместо
сайт.ру/категория/подкатегория/id-материал
было
сайт.ру/id-материал


Нужно видеть структуру Ваших каталогов и иметь доступ к Вашему сайту.
« Последнее редактирование: 29.10.2015, 12:52:50 от Филипп Сорокин » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #2 : 05.10.2015, 03:44:13 »

Ради интереса провёл "эксперимент". Установил чистую Joomla на локалку и написал выражение. Проверил — вроде работает, но за последствия не ручаюсь. Не претендую на истину в последней инстанции, может товарищи "постарше" подскажут вариант лучше. Использовал чистый джумловский .htaccess

Код:
## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

# Необходимо писать редиректы точно в этом месте
# Типичная ошибка новичков — добавлять директивы в начало или конец .htaccess

Код:
# Убедимся, что это не файл
RewriteCond %{REQUEST_FILENAME} !-f [OR]

# Если это всё-таки файл, убедимся, что под исключения не попадает index.php, [NC] флаг отменяет регистрочувствительность
RewriteCond %{REQUEST_URI} ^/index\.php [NC]

# Проверим, что это не физическая директория
RewriteCond %{REQUEST_FILENAME} !-d

# index.php в URLе может быть, может и нет, как и субкатегория. Здесь теоретически может
# возникнуть неопределённость: под шаблон ^[^/]+/(\d+-[^/]+) могут попасть URLы, не
# относящиеся к материалам. Возможно, следует уточнить шаблон, но для этого необходимо
# знать структуру каталогов самого сайта; также можно добавить исключения
# в RewriteCond в зависимости от обстоятельств

RewriteRule ^(?:index\.php/)?(?:[^/]+/)?[^/]+/(\d+-[^/]+)$ /$1 [R=301,L,NC]

# Или более "радикальный" шаблон для субкатегорий любого уровня вложенности (см. пост ниже)
# RewriteRule ^(?:index\.php/)?(?:[^/]+/)+(\d+-[^/]+)$ /$1 [R=301,L,NC]
« Последнее редактирование: 06.10.2015, 03:45:40 от Филипп Сорокин » Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #3 : 05.10.2015, 15:40:36 »

Спасибо, но что-то не работает. у вас какой URL?
у меня например такой, с ним не срабатывает
Цитировать
Неверное перенаправление на странице

Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
http://sait.ru/kategoriya/podkategoriya/15-nazvaniye-materiala


думаю может у меня что не так. но ввожу в калькулятор, он пишет ошибка
http://regexpres.narod.ru/calculator.html


а на другом сайте работает
http://htaccess.madewithlove.be/
« Последнее редактирование: 05.10.2015, 16:02:23 от Karyuudo » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #4 : 05.10.2015, 15:48:18 »

Спасибо, но что-то не работает. у вас какой URL?
у меня например такой, с ним не срабатываетhttp://sait.ru/kategoriya/podkategoriya/15-nazvaniye-materiala


думаю может у меня что не так. но ввожу в калькулятор, он пишет ошибка
http://regexpres.narod.ru/calculator.html

Если не работает, то попробуйте с родным .htaccess Joomla. Не забудьте только кэш браузера перед этим почистить. Может, ваши правила перебивают директивы. Структура каталогов у меня абсолютно такая же.
« Последнее редактирование: 05.10.2015, 16:00:51 от Филипп Сорокин » Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #5 : 05.10.2015, 16:13:23 »

Если не работает, то попробуйте с родным .htaccess Joomla. Не забудьте только кэш браузера перед этим почистить. Может, ваши правила перебивают директивы. Структура каталогов у меня абсолютно такая же.
не пойму, что у меня не так.
1. скачал чистую Joomla 3.4.4
2. взял оттуда htaccess
3. загрузил в дирректорию сайта (локально)
4. переименовал с точкой.
5. после
Цитировать
## End - Custom redirects
вставил Ваш код (далее идет
Цитировать
##
# Uncomment following line if your webserver's URL)
6. открываю страницу
Цитировать
Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
в админке выставлено следующее:
Цитировать
Включить SEF (ЧПУ) - да
Перенаправление URL - да
Добавлять суффикс к URL - нт
Алиасы в Unicode - нет
пробовал менять, тож не работает. (кэш вообще отключен)

хотя само поидее должно выражение работать, я проверил тут урлы своего сайта - все ок, сокращает:
http://htaccess.madewithlove.be/
« Последнее редактирование: 05.10.2015, 16:18:19 от Karyuudo » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #6 : 05.10.2015, 20:43:46 »


хотя само поидее должно выражение работать, я проверил тут урлы своего сайта - все ок, сокращает:
http://htaccess.madewithlove.be/

Ну... и я о том же! Вот посмотрите демо-сайт Joomla 3 на котором я ставил опыты, всё сокращается как надо: ссылка. Выкладываю полностью .htaccess

Показать текстовый блок

Может вы не до конца очистили кэш браузера? Попробуйте удалить всю историю полностью и перезагрузить браузер, или воспользуйтесь другим браузером. Если и после этого не работает, то тут надо выяснять в индивидуальном порядке.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #7 : 06.10.2015, 03:18:25 »

Сегодня снова вернулся к своим "опытам". Дублей страниц материалов в стандартной структуре каталогов насчитал немерено. Например, в стандартной демонстрашке есть статья про коалу, которая открывается по ссылке:

Код:
http://site.ru/image-gallery/animals/25-koala

Данная статья доступна также по следующим пятнадцати(!) URL:

Код:
http://site.ru/image-gallery/25-koala
http://site.ru/animals/25-koala
http://site.ru/25-koala
http://site.ru/photo-gallery/animals/25-koala
http://site.ru/park-site/photo-gallery/animals/25-koala
http://site.ru/park-site/animals/25-koala
http://site.ru/park-site/25-koala
http://site.ru/72-sample-data-articles/park-site/photo-gallery/animals/25-koala
http://site.ru/72-sample-data-articles/photo-gallery/animals/25-koala
http://site.ru/72-sample-data-articles/park-site/animals/25-koala
http://site.ru/72-sample-data-articles/animals/25-koala
http://site.ru/72-sample-data-articles/park-site/animals/25-koala
http://site.ru/72-sample-data-articles/park-site/photo-gallery/25-koala
http://site.ru/72-sample-data-articles/park-site/25-koala
http://site.ru/72-sample-data-articles/25-koala

В связи с чем, я написал более радикальный шаблон, который "рубит" любую комбинацию категорий разного уровня вложенности, перенаправляя все эти адреса на единственный желаемый вариант, в данном случае это:

Код:
http://site.ru/25-koala

Новый шаблон:

Код:
# Эту директиву надо поместить вместо старого RewriteRule; всё остальное оставить прежним
RewriteRule ^(?:index\.php/)?(?:[^/]+/)+(\d+-[^/]+)$ /$1 [R=301,L,NC]
« Последнее редактирование: 06.10.2015, 03:34:45 от Филипп Сорокин » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #8 : 06.10.2015, 03:35:11 »

Также обратите внимание на канонический URL! В случае с коалой он таков:
Код:
http://site.ru/72-sample-data-articles/park-site/photo-gallery/animals/25-koala
То есть при оптимизации каталогов, если материал не привязан к определённому пункту меню, необходимо также править ссылки и ставить канонический <link> средствами PHP. Для этой цели лучше всего написать собственный SEF плагин. Конечно, есть, готовые решения типа sh404SEF, однако лучше использовать родной SEF плагин Joomla в связке с собственными скриптами, потому что любой сторонний плагин SEF — это тяжеловесный танк (на все случаи жизни), который может сильно замедлять сервер.
« Последнее редактирование: 06.10.2015, 04:18:20 от Филипп Сорокин » Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #9 : 09.10.2015, 00:11:09 »

Причина в том, что не работала - плагин JL No doubles
вопрос еще один, для другого сайта:
просто сократить ссылку, "убрав каталог корневой" вроде бы так как я понял:
Код:
RewriteRule (.*)(katalog/)(.*) /$1$3 [R=301,L,NC]
однако при переходе, пишут, что страница не найдена. VirtueMart. видимо не совместимо? короче лучше не заморачиваться?
Записан
voland
Профи
********

Репутация: +487/-86
Online Online

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #10 : 09.10.2015, 00:19:02 »

Плагин Direct Alias
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Online Online

Пол: Мужской
Сообщений: 1452


« Ответ #11 : 09.10.2015, 00:28:58 »

Причина в том, что не работала - плагин JL No doubles
вопрос еще один, для другого сайта:
просто сократить ссылку, "убрав каталог корневой" вроде бы так как я понял:
Код:
RewriteRule (.*)(katalog/)(.*) /$1$3 [R=301,L,NC]
однако при переходе, пишут, что страница не найдена. VirtueMart. видимо не совместимо? короче лучше не заморачиваться?
Напишите ссылку и желаемый результат перенаправления или попробуйте использовать плагин, предложенный Воландом.
« Последнее редактирование: 09.10.2015, 22:28:56 от Филипп Сорокин » Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #12 : 09.10.2015, 01:01:05 »

просто сократить ссылку, "убрав каталог корневой" вроде бы так как я понял:
однако при переходе, пишут, что страница не найдена.
Конечно. Нельзя удалять все, что вам не нравится.
Представьте, что вам поручено найти дом с помощью такой строки:
страна=россия&город=москва&улица=ленина&дом=333.
Но ее вид почему-то не нравится поручителям и они решили сократить ее до
р/м/л/333
Все хорошо, дом все равно еще может быть найден.
Но потом они пошли дальше, сократив строку до
м/л/333
Теперь вам пипец! Sad
Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #13 : 16.11.2015, 01:27:05 »

Плагин Direct Alias
хотел удалить:
component/tags/tag/
Не удаляет что-то..

jlnodoubles отключил..


нашел выход! нудно создать пункт меню и присвоить ему метки
« Последнее редактирование: 16.11.2015, 01:39:13 от Karyuudo » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet