Не нравятся результаты поиска? Попробуйте другой поиск!
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    159    2 комментария

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

Автор: 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качиваний: 8)

2 комментария

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
В телегу писать сразу задачу и бюджет.

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