Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Модули для DLE » 0.18.1 [DE13,14,14.1] Короткая ссылка на новости (site.ru/{id}) [плагин]

0.18.1 [DE13,14,14.1] Короткая ссылка на новости (site.ru/{id}) [плагин]


     20.11.2020    Модули для DLE    485    5 комментариев

Краткая информация о модуле (хаке)

Автор: dj-avtosh
Версия DLE: 13+
Контакты: telegram: @blob42
Условия продажи: Freeware
Цена: Freeware
Обновление: Добавлена поддержка 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'];


----------------------------

news-new-link-type0181.zip [1,13 Kb] (cкачиваний: 16)

5 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 20 ноября 2020 22:36 -

Что бы было /категория/{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]

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 20 ноября 2020 22:39 -

Решение по canonical: тут

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Sanerko
Юзер

Sanerko - 28 декабря 2020 11:22 -

dj-avtosh,


Заметил один большой баг id новости 2020 - урл https://sait.ru/2020/ открываются по адресу Материалы за 2020 год, возможно исправить?

Т.е новость не доступна(

dj-avtosh
PHP-developer

dj-avtosh - 28 декабря 2020 11:25 -

это не баг, опустите эти правило, которые обрабатывют такой урл ниже чем то, что в статье:


RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html$ index.php?mod=print&subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 [L]



ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Sanerko
Юзер

Sanerko - 28 декабря 2020 11:27 -

Спасибо, сработало!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх