UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: randomObject от 18 Апреля 2017, 15:52:13

Название: Редирект в нижний регистр, не отображается структура сайта
Отправлено: randomObject от 18 Апреля 2017, 15:52:13
Пытаюсь избавиться от дублей страниц с регистром типо /prIvEtmOy2007. Прописываю в .htaccess слудующее

RewriteEngine On
RewriteBase /
 
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]
 
RewriteRule ![A-Z] - [S=28]
 
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2
 

RewriteRule [A-Z] - [N]
 
RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]      

Редирект отработал, но теперь у меня не отображается структура сайта в админке

Cкрин ошибки
http://take.ms/joVBm

Как быть?

Название: Re: Редирект в нижний регистр, не отображается структура сайта
Отправлено: aghigay от 18 Апреля 2017, 16:39:56
не делать так :-)
Название: Re: Редирект в нижний регистр, не отображается структура сайта
Отправлено: e.ioffe от 18 Апреля 2017, 17:20:55
Отправьте в ЛС доступы к сайту - посмотрю, что можно сделать. Есть наработки по редиректам для версий umi больше 2.11
Название: Re: Редирект в нижний регистр, не отображается структура сайта
Отправлено: randomObject от 18 Апреля 2017, 17:25:40
не делать так :-)

А как надо?
Название: Re: Редирект в нижний регистр, не отображается структура сайта
Отправлено: randomObject от 18 Апреля 2017, 17:42:14
Отправьте в ЛС доступы к сайту - посмотрю, что можно сделать. Есть наработки по редиректам для версий umi больше 2.11

не могу, мы еще не пили на брудершафт
Название: Re: Редирект в нижний регистр, не отображается структура сайта
Отправлено: aghigay от 18 Апреля 2017, 22:29:17
не делать так :-)

А как надо?

Никак.

Дело в том, что по какой-то, хрен знает какой причине, в UMI используется при написании функций CamelCase стиль. Это значит, что часть функций выглядит не как some_do, а как someDo.

Естественно, что при попытке использовать ваш прекрасный алгоритм вы получаете обращение к функции somedo, которой физически нет в системе. Скажем дружно спасибо недальновидности команды разработчиков.

Что делать в этом случае?
Проверять что вы обращаетесь к административным функциям или по стандартным протоколам и такие запросы исключить из своих правил.

О чем это я?
Все очень просто.
Находясь на сайте пользователь просто переключается по страницам. Нет никакой проблемы в том, что их адрес меняется на маленькие буквы.
Но проблема возникает в тот момент, когда вы пытаетесь обратиться через админку в стандартный набор действий или же когда вы пытаетесь обратиться, например, к udata (обычный вариант - запрос через AJAX)

Вот именно такие запросы (/admin/..., /udata/..., /usel/..., /upage/..., /uobject/...) вам и нужно исключить. Тогда, возможно, вы не нарветесь на неприятности. Но не факт. (пример - функция saveInfo для сохранения информации о заказе)