Скрыть стандартные пути /admin, /user, /node

Главные вкладки

Аватар пользователя rumzes rumzes 16 июня 2009 в 15:24

Приветствую Уважаемое сообщество.

Тема поднималась не один раз, но чего то однозначного найти не удалось, несмотря на то, что данная проблема данный недочет drupal давно известен.

  1. Содержимое страниц с адресами site.com и site.com/node абсолютно одинаковое
  2. При использовании алиасов путей, все узлы остаются доступными по адресу node/nid, а хотелось бы видеть 404(что вполне логично)
  3. В дополнение ко всему — /admin и /user... Что делать непонятно... Если к примеру есть два шаблона(один для админки, второй для сайта), то если не авторизовавшись набрать адрес /admin, то будет 404, но в теле шаблона админки, а не шаблона сайта, как хотелось бы...

По сути все сводится к двум основным моментам:
— нужно показывать 404 в случае, если в пути есть «node».
— по поводу /admin и /user трудно сказать...

Подскажите пожалуйста, кто сталкивался с решением данных задач и каким образом победил...?

Комментарии

Аватар пользователя rumzes rumzes 16 июня 2009 в 16:46

RxB wrote:
Кто говорит что это недочёт?

а разве это нормально, когда есть две страницы с полностью одинаковым содержимым...?

RxB wrote:
И кто вам сказал что содержимое ?q=node и главной одинаковое? Кто-то запрещает на главную прицепить другую страницу

Если у Вас не одинаковое, поделитесь, каким образом Вы этого добились?

Аватар пользователя Химический Али Химический Али 16 июня 2009 в 16:58

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

Path и PathAuto уже пробовали?

Аватар пользователя rumzes rumzes 16 июня 2009 в 17:11

Модули пробовал(использую Path и PathAuto), но как они могут помочь в данной ситуации...? При создании алиасов системные пути работают.

Или речь идет о глобал редирект?

Аватар пользователя Azerot Azerot 16 июня 2009 в 17:30

.htaccess и mod_rewrite в руки.

в .htaccess пишем правило:

RewriteCond %{REQUEST_URI} ^/node.*$
RewriteRule ^(.*)$ http://mysite.com/404.php [R=301,L]

И пожалуйста - везде где будет /node вначале URI будет переход на страницу 404.php
При этом если материал создан с использованием скажем URL aliases, по alias'у он по прежнему доступен

Аватар пользователя Geldora Geldora 16 июня 2009 в 17:31

глобал редирект - переправит с путей node/nid на vashurl, если последний был сделан через пазауто, кроме того во пазауто встроен модуль паз редирект, который переправляет со старых алиасов на новые.

Так что, пож-ста, перечеркните слово недочет Smile

Аватар пользователя rumzes rumzes 16 июня 2009 в 18:27

Спасибо, но необходимо делать не редирект, а показывать — 404 страницу.

Кстати, а почему 404 считаются плохими?

Аватар пользователя Geldora Geldora 16 июня 2009 в 19:16

А зачем 404???

Представьте - вы сделали один алиас, потом что-то там намудрили (со мной это случается регулярно ;)) и у вашей статьи теперь другой алиас. Но все ссылки-то ведут на первый!!!

Если неправильный алиас будет вести на 404, то никто ничего не найдет: ни поисковики, ни пользователи. если будет редирект 301 - то и поисковики запомнят новый адрес, а люди вообще ничего не заметят!

И кстати - поставьте вы глобал редирект и сами посмотрите!!! Там в настройках есть - редирект на 404 и вообще любую из ошибок...

Аватар пользователя rumzes rumzes 16 июня 2009 в 20:18

Geldora wrote:
Там в настройках есть - редирект на 404 и вообще любую из ошибок...

Что-то не найду я никак таких настроек. Это про глобал редирект?

Аватар пользователя jason32 jason32 16 июня 2009 в 20:02

что-то совсем плохо стало на ресурсе, скоро вообще одни блондинки что-ли останутся?
1. admin/settings/site-information - здесь ставится, какая страница главная.
2. Не вижу никакой логики, реально идёт обращение к node/[nid], а алиас - для красоты. Не вижу, в чем минусы. Это основа архитектуры друпала - обращение по номеру к каждой ноде.
3. для /user проблема не понятна - с ним-то что не так? А с admin тут вопрос философии: для систем с отдельной админкой( Битрикс, Неткат) набирая /admin никто же не ожидает, что останется дизайн front-end'а. Здесь фактически делается отдельный вид админки - поэтому при /admin и выдается админка, 403 страница и форма входа.

Аватар пользователя VVS VVS 21 сентября 2010 в 21:20

Если главная будет другой, то по /node всё равно будет доступно сообщение типа: Добро пожаловать на ваш новый сайт на Drupal! и т.д.
Т.е. надо вообще убрать этот путь из доступных - чтобы его не существовало. Это ж где-то в ядре?

Аватар пользователя DURMAN DURMAN 21 июня 2013 в 11:56

Знаю, что уже поздно, но тем не менее... может кто сейчас бьётся с этим вопросом, то у него будет шанс найти таки здесь ответ)
Сам недавно задался таким вопросом, тоже рыскал за ответом на здешнем ресурсе, но похоже здешнее сообщество не любит новичков и никак им не стремиться помочь отвечая на всякие дуратские вопросы Smile
Значит на эти вопросы по мере сил и знаний буду отвечать я!))) Теперь о проблеме. Чтобы "закрыть админку" нужно просто сделать тему для администрирования такую-же как и основная тема сайта т.е. здесь /admin/settings/admin выбираем "стандартно" (обычно если вы сюда не лазили, то и должно всё работать "из коробки") и после этого при обращении по пути - "доменное имя сайта"/admin вы увидите долгожданную надпись, что доступ запрещён Wink Если делать разные темы для сайта и "админки", тогда нужно что-то мудрить либо с редиректом, либо с реврайтом, но это уже в настройках web-сервера.
Теперь к вопросу как закрыть /user, /node, да очень просто) Тут нам на помощь приходит модуль pathauto настройки которого позволяют запутать любого посетителя сайта, настраиваете шаблон автозамены и всё будет шито-крыто Smile
Удачи всем в друпалом!

Аватар пользователя hiworld hiworld 12 февраля 2015 в 20:33
<?php

//\modules\user\user.module:1810
  //-- ------
  // user2login - новый урл со страницой логина
  
$items['user2login'] = array(
    
'title' => 'User account',
    
'title callback' => 'user_menu_title',
    
'page callback' => 'user_page',
    
'access callback' => TRUE,
    
'file' => 'user.pages.inc',
    
'weight' => -10,
    
'menu_name' => 'user-menu',
  );
  
// И если вам надо закрыть страницу
  
$items['user']['access callback'] = FALSE;
  
  
$items['user2login/register'] = array(
    
'title' => 'Create new account',
    
'page callback' => 'drupal_get_form',
    
'page arguments' => array('user_register_form'),
    
'access callback' => 'user_register_access',
    
'type' => MENU_LOCAL_TASK,
  );
  
$items['user/register']['access callback'] = FALSE;
  
//-- ------
?>