UMIhelp
Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: 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
Как быть?
-
не делать так :-)
-
Отправьте в ЛС доступы к сайту - посмотрю, что можно сделать. Есть наработки по редиректам для версий umi больше 2.11
-
не делать так :-)
А как надо?
-
Отправьте в ЛС доступы к сайту - посмотрю, что можно сделать. Есть наработки по редиректам для версий umi больше 2.11
не могу, мы еще не пили на брудершафт
-
не делать так :-)
А как надо?
Никак.
Дело в том, что по какой-то, хрен знает какой причине, в UMI используется при написании функций CamelCase стиль. Это значит, что часть функций выглядит не как some_do, а как someDo.
Естественно, что при попытке использовать ваш прекрасный алгоритм вы получаете обращение к функции somedo, которой физически нет в системе. Скажем дружно спасибо недальновидности команды разработчиков.
Что делать в этом случае?
Проверять что вы обращаетесь к административным функциям или по стандартным протоколам и такие запросы исключить из своих правил.
О чем это я?
Все очень просто.
Находясь на сайте пользователь просто переключается по страницам. Нет никакой проблемы в том, что их адрес меняется на маленькие буквы.
Но проблема возникает в тот момент, когда вы пытаетесь обратиться через админку в стандартный набор действий или же когда вы пытаетесь обратиться, например, к udata (обычный вариант - запрос через AJAX)
Вот именно такие запросы (/admin/..., /udata/..., /usel/..., /upage/..., /uobject/...) вам и нужно исключить. Тогда, возможно, вы не нарветесь на неприятности. Но не факт. (пример - функция saveInfo для сохранения информации о заказе)