Обновление: Добавлена поддержка DLE 14, 14.1
Легкий и быстрый плагин для изменения ссылок по всему сайту.
Для работы решения должен быть установлен тип SEO-ссылок: 1 или 2
Превращает по всему сайту ссылки: site.ru/{cat}/text-{id} в site.ru/{id}
Способ установки:
1. Загрузить и установить плагин в админке (/admin.php?mod=plugins)
2. Прописать правила:
- Для apache2 (httpd) [файл .htaccess] (желательно выше всех правил):
- Для nginx [conf-файл из /etc/nginx.conf]:
P.S.
Если вы хотите ссылку site.ru/123.html, тогда открываем плагин и
заменяем на
и переделываем правила apache2 или nginx
А так же (если вам нужна переадресация со старых адресов на новый, то должно в .htaccess работать такое):
Тип ЧПУ 1:
Тип ЧПУ 2:
* можно добавить оба - будет работать.
* не меняются ссылки в BlockPro? есть решение:
engine/modules/base/core/base.php
все что с :
меняем на:
Легкий и быстрый плагин для изменения ссылок по всему сайту.
Для работы решения должен быть установлен тип 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;
Если вы хотите ссылку site.ru/123.html, тогда открываем плагин и
Код:
$newsPattern = "$1";
$newsCommentsPattern = "$3";
заменяем на
Код:
$newsPattern = "$1.html";
$newsCommentsPattern = "$3.html";
А так же (если вам нужна переадресация со старых адресов на новый, то должно в .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'];
В двух местах найти
и заменить:
Использовать паттерн:
APACHE2:
Переадресация со старых на новые
NGINX:
ВНИМАНИЕ!
Что бы не сломать системные пути, делаем так для NGINX:
Удаляем это:
В самый низ над всеми правилами вставляем это:
APACHE:
СТРОГО над этим:
вставляем это:
Код:
$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 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;
СТРОГО над этим:
Код:
RewriteRule ^([^.]+)/page/([0-9]+)(/?)+$ index.php?do=cat&category=$1&cstart=$2 [L]
Код:
RewriteRule ^([^.]+)/([0-9]+)(/?)+$ index.php?seocat=$1&newsid=$2 [L]