Dleshka.org
Авторизация

Хак Короткая ссылка на новости upd v0.18.1

+51
TipTop 24-11-2020 Хаки DLE 3 комментария
Короткая ссылка на новости upd v0.18.1

Обновление: Добавлена поддержка DLE 14, 14.1
Легкий и быстрый плагин для изменения ссылок по всему сайту.

Для работы решения должен быть установлен тип SEO-ссылок: 1 или 2

Превращает по всему сайту ссылки:
site.ru/{cat}/text-{id}
в
site.ru/{id}


Способ установки:

1. Загрузить и установить плагин в админке (/admin.php?mod=plugins)
2. Прописать правила:

- Для apache2 (httpd) [файл .htaccess] (желательно выше всех правил):

RewriteRule ^([0-9]+)(/?)+$ index.php?newsid=$1 [L]


- Для nginx [conf-файл из /etc/nginx.conf]:

rewrite ^/([0-9]+)(/?)+$ /index.php?newsid=$1 last;


P.S.

Если вы хотите ссылку site.ru/123.html, тогда открываем плагин и

$newsPattern = "$1";
$newsCommentsPattern = "$3";


заменяем на

$newsPattern = "$1.html";
$newsCommentsPattern = "$3.html";


и переделываем правила apache2 или nginx

А так же (если вам нужна переадресация со старых адресов на новый, то должно в .htaccess работать такое):

Тип ЧПУ 1:
RewriteRule ^([0-9]+)-(.*).html$ /$1 [R=301,L]


Тип ЧПУ 2:
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$2 [R=301,L]


* можно добавить оба - будет работать.

* не меняются ссылки в BlockPro? есть решение:

engine/modules/base/core/base.php

все что с :

$url = ... 


меняем на:

$url = $this->dle_config['http_home_url'] . $data['id'];


Автор:dj-avtosh
Версия DLE:13 - 14.1
Контакты:telegram: @blob42

news-new-link-type0181.zip [1.13 Kb] (cкачиваний: 124)
Информация
Зарегистрируйтесь чтобы комментировать публикацию.
li4i
18 января 2021 06:21
+ 0 -
В dle 14.1 вот такая ошибка в файле /engine/classes/templates.class.php
Fatal error: Uncaught Error: Call to undefined function newsNewLink() файл cacheА строка 90

И очень хочется видеть категорию (желательно первую (главную)) в начале пути, типа sity.ru/video/12413/
tiptop
18 января 2021 07:58
+ 0 -
li4i,
By dj-avtosh

Что бы было /категория/{id}:

В двух местах найти:
$str = preg_replace( '#https?://.*?page,([0-9]+),([0-9]+),([0-9]+)-.*\.html#i', '/' . $newsCommentsPattern . '/?news_page=$1&cstart=$2', $str ); $str = preg_replace( '#https?:\/\/.*\/([0-9]+)-.+\.html#i', '/' . $newsPattern, $str );

и заменить:

$str = preg_replace( '#https?://.*?page,([0-9]+),([0-9]+),([0-9]+)-(.*)\.html#i', '/' . $newsCommentsPattern . '/?news_page=$1&cstart=$2&seourl=$4', $str ); $str = preg_replace( '#https?://.*/(.*)/([0-9]+)-.+\.html#i', '/' . $newsPattern, $str );

Использовать паттерн:

$newsPattern = "$1/$2.html"; $newsCommentsPattern = "$3/$4.html";

APACHE2:

RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]

Переадресация со старых на новые
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ /$1/$2 [R=301,L]

NGINX:

nginx rewrite ^/([^.]+)/([0-9]+)(/?)+$ /index.php?seocat=$1&newsid=$2 last;

ВНИМАНИЕ!

Что бы не сломать системные пути, делаем так для NGINX:

Удаляем это:

rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last; rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last

В самый низ над всеми правилами вставляем это:

rewrite ^/([^.]+)/([0-9]+)(/?)+$ /index.php?seocat=$1&newsid=$2 last; rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last; rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last;

APACHE:

СТРОГО над этим:

RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]

вставляем это:

RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]
li4i
19 января 2021 06:48
+ 0 -
TipTop,
Повторил но не работает навигация по страницам.
И модулем вставать на отрез отказалось, правил файлы, тогда встало.

наверняка дело в реврите, но я в этом не разбираюсь

разобрался, прописал так и все заработало как надо
после
RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]
вставить
RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]
Авторизация