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

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

необходимо добавить в url_rewrite.php
Так — на 404 (что не очень хорошо)
  1.  
  2. $rules[] = array(
  3. 'source' => '/^users$/i',
  4. 'target' => '/',
  5. 'action' => 'rewrite'
  6. );
  7.  
а вот так — перенаправить на главную
  1.  
  2. $rules[] = array(
  3. 'source' => '/^users$/i',
  4. 'target' => '/',
  5. 'action' => 'redirect-301'
  6. );
Пример: allmarkets.com.ua/users
-1
picaboo picaboo 13 лет назад #
а пардон сам юзер как к себе в профиль попадет?
0
Protomoto Protomoto 13 лет назад #
http://test.allmarkets.com.ua/users/nick
примерно так
0
Protomoto Protomoto 13 лет назад #
/users$
$ - если я не ошибаюс, конец строки в запросе
-1
picaboo picaboo 13 лет назад #
а.. то есть это для не авторизованных. понял. может указать это в тексте ?smileа то не очевидно.
0
Protomoto Protomoto 13 лет назад #
нет, смысл в том, чтобы не был доступен СПИСОК пользователей. Т.е. страницы пользователей доступны
0
nikitka nikitka 13 лет назад #
А как можно сделать чтоб адрес выглядел не как сейчас например http://instantcms.ru/users/nikitka просто http://instantcms.ru/nikitka
0
Protomoto Protomoto 13 лет назад #
открываем /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
0
Protomoto Protomoto 13 лет назад #
ВНИМАНИЕ! В КОДЕ УКАЗАН 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';
}
0
Protomoto Protomoto 13 лет назад #
короче, поскольку коменты редактировать нельзя - смотрим и пишем здесь http://instantcms.ru/blogs/modifikaci-fiksy-instanta/prjamoe-imja-polzovatelja-bez-users.html

Еще от автора

Алфавитный указатель в статьях
Возникла необходимость навигации по статьям в категории через Алфавитный указатель (как в Универсальном каталоге) Реализовал.
FIX: Прозрачность PNG при ресайзе
Добрый день. Предлагаю исправление "забытой Богом" библиотеки /includes/graphic.inc.
Субдомен имени пользователя (user.instantcms.ru)
Продолжаем усоциаливать инстант Как сделать имена типа user.instantcms.ru Открываем core/cms.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.