Закрыть /users и подобные страницы

1070
Вот, зарегался (повторно) в Инстанте, и меня сразу же буквально в аське нашел человек, которому интересен Инстант. Привожу ответ на его вопрос (может кому-то пригодится)
Как закрыть страницу /users (либо аналогичные)

необходимо добавить в url_rewrite.php
Так - на 404 (что не очень хорошо)
Код PHP:
        $rules[] = array(
                            'source'  => '/^users$/i',
                            'target'  => '/',
                            'action'  => 'rewrite'
                         );
а вот так - перенаправить на главную
Код PHP:
        $rules[] = array(
                            'source'  => '/^users$/i',
                            'target'  => '/',
                            'action'  => 'redirect-301'
                         );
Пример: http://allmarkets.com.ua/users
Закрыть /admin неавторизованным пользователям (администраторам) | Карусель топ-товаров
Комментарии (9)
picaboo 1 апреля 2011 в 15:25 -1
а пардон сам юзер как к себе в профиль попадет?
Protomoto 1 апреля 2011 в 15:40 0
http://test.allmarkets.com.ua/users/nick
примерно так
Protomoto 1 апреля 2011 в 15:41 0
/users$
$ - если я не ошибаюс, конец строки в запросе
picaboo 1 апреля 2011 в 16:56 -1
а.. то есть это для не авторизованных. понял. может указать это в тексте ?smileа то не очевидно.
Protomoto 1 апреля 2011 в 17:02 0
нет, смысл в том, чтобы не был доступен СПИСОК пользователей. Т.е. страницы пользователей доступны
͡﴾͡๏̯͡๏﴿ 19 августа 2011 в 22:19 0
А как можно сделать чтоб адрес выглядел не как сейчас например http://instantcms.ru/users/nikitka просто http://instantcms.ru/nikitka
Protomoto 13 октября 2011 в 00:50 0
открываем /core/cms.php

находим обработку компонента по умолчанию (строка 1565)
            
Код PHP:
//если компонент не существует, считаем что это content
            $this->uri = 'content/'.$this->uri;
            $this->is_content = true;
            return 'content';
заменяем его на это
Код PHP:
$inDB = cmsDatabase::getInstance();
$q="SELECT id from cms_users WHERE login like '".mysql_real_escape_string($component)."'";
$result = $inDB->query($q) ;
if ($result){
	 $this->uri='companies/'.$component;
	return 'companies';
}	
else{	
           //если компонент не существует, считаем что это content
            $this->uri = 'content/'.$this->uri;
            $this->is_content = true;
            return 'content';
}
Внимание! Во избежание конфликта логинов пользователей с названиями компонентов, необходимо в списке запрещенных логинов пользователей (Компоненты-Регистрация вкладка Форма) дополнить список запрещенных имен названиями компонентов системы:
arhive
autoawards
banners
blogs
board
catalog
clubs
comments
content
faq
forms
forum
photos
price
registration
rssfeed
search
statistics
users
Protomoto 13 октября 2011 в 00:52 0
ВНИМАНИЕ! В КОДЕ УКАЗАН companies вместо users
Код PHP:
$inDB = cmsDatabase::getInstance();
$q="SELECT id from cms_users WHERE login like '".mysql_real_escape_string($component)."'";
$result = $inDB->query($q) ;
if ($result){
	 $this->uri='users/'.$component;
	return 'users';
}	
else{	
           //если компонент не существует, считаем что это content
            $this->uri = 'content/'.$this->uri;
            $this->is_content = true;
            return 'content';
}
Protomoto 13 октября 2011 в 01:00 0
короче, поскольку коменты редактировать нельзя - смотрим и пишем здесь http://instantcms.ru/blogs/modifikaci-fiksy-instanta/prjamoe-imja-polzovatelja-bez-users.html