Нижнее подчёркивание в ЧПУ

InstantCMS 2.X
#1 13 сентября 2026 в 10:21

При вводе ЧПУ в поле URL если есть нижний дефис то выходит ошибка. Например xxxxx_xxxxxx А если так xxxxx-xxxxx то сохраняется нормально. Я сейчас перевожу на Инстант свой старый блог который работает с 2009 года и там многие ссылки именно с нижним дефисом. Можно ли как то решить эту проблему?

#2 13 сентября 2026 в 20:19

Можно ли как то решить эту проблему?

Gamma

Можно. Нужен компонент, который сделает две вещи:

1. Заменит правило валидации url в форме, добавленное тут github.com/instantsoft/icms2/blob/a78f8241a97b5aee55f5808d8fb0be20c298eec7/system/controllers/content/frontend.php#L820

на что-то типа slug_extended

2. а также через хук тут github.com/instantsoft/icms2/blob/a78f8241a97b5aee55f5808d8fb0be20c298eec7/system/core/controller.php#L923 расширить поддержку роутов контроллера контент. Там сейчас нет github.com/instantsoft/icms2/blob/a78f8241a97b5aee55f5808d8fb0be20c298eec7/system/controllers/content/routes.php#L153 поддержки роута с _ поэтому возвращается 404

И добавить кастомный класс контроллера content по документации docs.instantcms.ru/dev/controllers/custom

чтобы объявить в нем этот самый validate_slug_extended

Должно взлететь. 

Можно поправить описанные выше места прямо в движке, но мне такой план не нравится. Путь в никуда.
#3 14 сентября 2026 в 09:11

Спасибо, но так как такого компонента в природе не существует то наверно проще в .htaccess прописать редирект 301 на 80-90 страниц, на которых пришлось править url. 

#4 15 сентября 2026 в 14:26

то наверно проще в .htaccess прописать редирект 301 на 80-90 страниц

Gamma

Тогда может проще перелинковать ваши ссылки? У WP наверника есть какой нибудь плагин на этот вариант.

#5 16 сентября 2026 в 18:54
Спасибо, но так как такого компонента в природе не существует то наверно проще в .htaccess прописать редирект 301 на 80-90 страниц, на которых пришлось править url. 
Gamma

Почему нет? Есть же прямо в стоке docs.instantcms.ru/manual/components/redirect

#6 22 сентября 2026 в 19:14

Я сделал проще, добавил в .htaccess вот такую строку

RewriteRule ^(.*)_(.*)$ /$1-$2 [R=301,L]

Но обнаружил что это каким то образом влияет на  Wysiwyg редакторы Сначала я не смог вставить картинку в текст в произвольном месте через редактор. Нажимая Вставить/изменить изображение не появляется окно для вставки. Всё остальное работает (ссылка, центровка, подчёркивание, вставка видео, цвет текста и фона...) А когда решил посмотреть в компонентах в чём проблема обнаружил что вместо всех редакторов открывается страница 404. Кто может подсказать в чём дело? Или всё же пойти через компонент редиректа? Не использовать .htaccess ? 

Если второй вариант, кто сможет помочь вписать нужное в компонент? Оплачу (в разумных пределах)
 

#7 23 сентября 2026 в 07:37

Кто может подсказать в чём дело

Gamma

есть же экшны и контроллеры с подчеркиванием внизу. У вас скорее всего проблемы с биллингом

Изображение

и много еще чем.

Вставить/изменить изображение не появляется окно для вставки

Gamma

потому что там тоже название экшна через подчеркивание

Изображение

И вы на них все своей регуляркой повлияли. Попробуйте сузить действие регулярки, добавив в него привязку к имени типа контента.

#8 23 сентября 2026 в 10:15

Спасибо за подсказку. Попробую.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.