Форум русской поддержки Joomla!® CMS
08.12.2016, 13:59:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Изменение ошибки при недоступном ресурсе

 (Прочитано 443 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« : 01.12.2016, 02:30:05 »

Здравствуйте. Можно ли решить такую задачу? Имеется внутренний ресурс с личным кабинетом. Доступ к нему с внешнего мира закрыт. Есть внешний ресурс на котором есть ссылка на личный кабинет внутреннего ресурса. Пользователи которые находятся во внутренней сети открыв внешний ресурс и перейдя по ссылки попадают в личный кабинет. Пользователи которые не находятся во внутренней сети (другой провайдер и т.д.) при переходе по ссылке получают ошибку (File not found) о том, что ресурс не найден и это понятно. Вопрос, можно ли как то сделать, что бы при попытки открыть внутренний ресурс вылетала не ошибка, а сообщение о том, что что бы попасть на этот ресурс вы должны быть подключены к внутренней сети. Как то так. Так например сделано у некоторых интернет провайдеров. Я даже не представляю как это можно сделать. Спасибо.
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Online Online

Пол: Мужской
Сообщений: 5225



« Ответ #1 : 01.12.2016, 10:44:33 »

можно определить IP пользователя и если он не совпадает с "внутренний ресурс", то ставить другую ссылку
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #2 : 01.12.2016, 11:05:51 »

Да, скорее всего как то так, но как это сделать? Можно это сделать как то не совсем сложно, например поставить какой то плагин или расширене? Если надо что то кодировать то я наверное не смогу.
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Online Online

Пол: Мужской
Сообщений: 5225



« Ответ #3 : 01.12.2016, 11:15:00 »

расширение тут не поможет, "кодировать" там тоже ничего не надо
надо просто прописать условие, где выводиться ссылка
Код:
$link = 'ссылка1';
if ($_SERVER['REMOTE_ADDR'] != 'IP сервера') {
    $link = 'ссылка2';
}
а где она там выводиться это никто не скажет кроме вас
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #4 : 01.12.2016, 11:27:59 »

Вроде все просто, осталось найти куда это записать  Shocked Я через админку добавила в Main menu пункт (ссылка) где указала адрес внутреннего ресурса. Я так понимаю Ваш код нужно добавлять в код этого меню (ссылки), а как найти где этот код?
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #5 : 01.12.2016, 15:29:13 »

Что то я совсем не пойму что и как. Скачала весь каталог сайта себе на компьютер, запустила поиск файла по содержимому и ни чего не нашла. Ни ссылку, ни название меню. Где то же должен быть файл с названием пункта меню, с ссылкой на внутренний ресурс. Как так где же этот файл?
Записан
SeBun
Практически профи
*******

Репутация: +134/-3
Offline Offline

Пол: Мужской
Сообщений: 2286



« Ответ #6 : 01.12.2016, 17:41:53 »

Нет, этот код нужно вставить в индексный файл внутреннего сайта или индексный файл вашего личного кабинета. Именно там нужно решать ваш вопрос.

Но подсказка, мне кажется, неверная. Вам в первую очередь нужно выяснить, что именно выдает ошибку "File not found". Это может быть скрипт или настройка сервера, или это прописано в .htaccess, если сервер Апач. Только после этого можно думать, как реализовать вывод страницы вместо этой надписи.

Возможно там стоит блокировка адресов, отличных от localhost (или адреса вашего сервера).
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #7 : 01.12.2016, 18:07:23 »

Нет, этот код нужно вставить в индексный файл внутреннего сайта или индексный файл вашего личного кабинета. Именно там нужно решать ваш вопрос.

Либо я совсем перестала в этом что то понимать либо лыжи не те. На локальном ресурсе разве что то надо делать? Когда до него пытаются достучаться из мира он вообще ни чего не принимает, то есть до него ни один пакет не долетает, так как он находится в локальной сети с серым адресом, и выход в мир не имеет.

Но подсказка, мне кажется, неверная. Вам в первую очередь нужно выяснить, что именно выдает ошибку "File not found". Это может быть скрипт или настройка сервера, или это прописано в .htaccess, если сервер Апач. Только после этого можно думать, как реализовать вывод страницы вместо этой надписи.

Да сервер апач, хостинг hc.ru. В файле .htaccess такой надписи нет. Я так понимаю это браузер компьютера выдает такую ошибку когда не может найти данный ресурс. Вроде мысль то правильная, при нажатии на ссылку прежде чем делать редирект нужно посмотреть какой IP, если он не наш белый IP, то выдавать страницу с надписью - Зайти на данный ресурс могут только пользователи данной сети. А если IP наш белый то отдавать ссылку - http://192.168.0.1 которая благополучно откроется, так как абонент имеет IP своего ПК из сети 192.168.0.0/24.

Возможно там стоит блокировка адресов, отличных от localhost (или адреса вашего сервера).

Не понятно, где стоит блокировка? Может я неправильно объяснила, вот например есть сайт на хостинге, на нем есть ссылка http://192.168.0.1
если Вы попытаетесь пройти по ней, что Вы получите? Правильно - ресурс не найден. А мне надо, что бы был ответ не ресурс не найдет, а например - Зайти на данный ресурс могут только пользователи данной сети. Как то так.
« Последнее редактирование: 01.12.2016, 18:14:49 от Julia_ » Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #8 : 01.12.2016, 18:34:00 »

вы пишете вначале, что пользователи из внешней сети получают 404 file not found. а далее что сервер недоступен извне. кто тогда отдает эту ошибку как спрашивает SeBun? точно не ваш внутренний сервер?
« Последнее редактирование: 01.12.2016, 18:38:52 от capricorn » Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #9 : 01.12.2016, 18:45:18 »

вы пишете вначале, что пользователи из внешней сети получают 404 file not found. а далее что сервер недоступен извне. кто тогда отдает эту ошибку как спрашивает SeBun?

Я не знаю кто отдает эту ошибку. Ну например, есть у нас в сети сервер с адресом http://172.16.54.23 если Вы попробуйте на него зайти, кто Вам отдаст ошибку? Уж точно не наш сервер 172.16.54.23. Может я что то упустила, есть два разных сайта, один на внешнем хостинге, а второй локальный. Локальные пользователи могут без проблем заходить как на внешний (хостинговый) сайт, так и на локальный, те кто не находятся в локальной сети, могут зайти только на внешний (хостинговый) сайт. Так вот, хотелось бы, что бы Вы например при посещении нашего хостингово сайта и нажатии на ссылку получали не - ошибку, а сообщение что - "Вы очень хороший парень, но увы не в нашем вкусе" Azn шутка.
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #10 : 01.12.2016, 19:54:53 »

предполагая, что нужно обработать ошибку сервера 404 на сайте под управлением Joomla, исходя из IP адреса посетителя, могу предложить попробовать следующее:

в файл .htaccess в конце допишите:

ErrorDocument 404 /ip_not_in_range.php

в корне сайта создайте файл ip_not_in_range.php c содержимым:

Показать текстовый блок

Вместо 192.168.0.0/24 в вызове функции ip_in_range поставьте свой IP/CIDR - спросите администратора внутренней сети какой именно. Это для IPv4 - 4-х байтового IP.

Если речь о чужом сервере, то эту ссылку (личный кабинет) надо перенаправить на нужную и обработать примерно так же.
« Последнее редактирование: 01.12.2016, 20:51:13 от capricorn » Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #11 : 01.12.2016, 20:46:09 »

Вместо - 192.168.0.0/24 написала наш внешний IP (вида х.х.х.х). К сожалению не помогло. Наверное там где я это видела сайт находится не на хостинге а на внутреннем сервере (он один) и ему открыт доступ в мир. Скорее всего в таком варианте можно сделать, просто в firewall разрешить локальным сетям доступ к личному кабинету, а всем остальным пришедшем из мира делать редирект на страницу заглушку. А в моем случае это должно быть как то - при нажатии на ссылку сначала проверяется IP нажавшего и сравнивается, если он совпадает с нашим белым, то отдавать ему ссылку, а если нет, то отдавать другую с красивой надписью. Вот например нашла, как на этом сайте - wlc-net.ru справа есть кнопка личного кабинета, почты, если на них нажать то увидите надпись. Абоненты которые подключены к ним думаю без проблем заходят в свой личный кабинет.
Записан
SeBun
Практически профи
*******

Репутация: +134/-3
Offline Offline

Пол: Мужской
Сообщений: 2286



« Ответ #12 : 01.12.2016, 20:51:31 »

Да нет, у нее, похоже, не настроен выход на внешку. Проверьте пинг этих адресов вне внутренней сети - они не будут работать. Вот вам и ошибка, которую получают пользователи.

Решение вопроса Julia_ может быть в этом случае только на сайте, расположенном в интернете, а не во внешней сети. Решить это можно, например, модулем. Julia_ создала ссылку в меню, которая, по идее, должна вести на сайт во внутренней сети. Но это условие выполняется только для тех, кто находится в этой сети. Для всех остальных внутренняя сеть недоступна и клиенту показывается ошибка. Для решения этого вопроса ссылка в меню должна вести на модуль, в котором выполняется проверка, относится ли клиент к внутренней сети или нет.

В простейшем варианте это можно сделать так: создайте в корне файл, назовем его userfilter.php к примеру. Вашу ссылку в меню изменяем так, что бы она вела на этот файл. Внутри файла пишем код, который выполняет проверку пользователя, точнее его принадлежность к внутренней сети, и, если он клиентом этой сети не является, делаем 301-й редирект на страницу с уведомлением, что доступ туда могут получить только лица, находящиеся во внутренней сети. Как то так.

Но вначале определитесь с тем, как вы их фильтровать будете, по каким признакам?

P.S. Пока писал, уже сама догадалась... Умничка! )))
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #13 : 01.12.2016, 21:12:43 »

Но вначале определитесь с тем, как вы их фильтровать будете, по каким признакам?

Как по каким? Если Ваш IP равен х.х.х.х (наш белый ip), то вот Вам ссылка, а если Ваш IP 0.0.0.0 или y.y.y.y и т.д., то вот Вам другая ссылка (где я умничка Azn ). Но как я раньше и думала это не просто так, так как нужен модуль-снифер определяющий IP, далее код сравнивающий полученный IP с тем, что у него записан (наш ip) и только после этого отдавать нужную ссылку. Что то мне подсказывает, что мне не решить данную задачку.
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Online Online

Пол: Мужской
Сообщений: 5225



« Ответ #14 : 01.12.2016, 21:13:23 »

вы че-то тут городите! я написал как это сделать
А в моем случае это должно быть как то - при нажатии на ссылку сначала проверяется IP нажавшего и сравнивается, если он совпадает с нашим белым, то отдавать ему ссылку, а если нет, то отдавать другую с красивой надписью. Вот например нашла, как на этом сайте - wlc-net.ru справа есть кнопка личного кабинета, почты, если на них нажать то увидите надпись. Абоненты которые подключены к ним думаю без проблем заходят в свой личный кабинет.
от того что нажмешь на ссылку мое IP не поменяется)

Вроде все просто, осталось найти куда это записать  Shocked Я через админку добавила в Main menu пункт (ссылка) где указала адрес внутреннего ресурса. Я так понимаю Ваш код нужно добавлять в код этого меню (ссылки), а как найти где этот код?
через админку это никак не сделаете
у вас ссылка эта выводится где-то же?
я не знаю где она там выводиться в меню, в шаблоне, в модуле и т.д., вариантов масса, вот там и надо прописывать условие
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #15 : 01.12.2016, 21:33:05 »

вы че-то тут городите! я написал как это сделатьот того что нажмешь на ссылку мое IP не поменяется)

А зачем он должен поменяться? Его надо узнать и если он совпадает с тем что записан для сравнения, то проходите, если нет "то на нет и суда нет".

через админку это никак не сделаете
у вас ссылка эта выводится где-то же?
я не знаю где она там выводиться в меню, в шаблоне, в модуле и т.д., вариантов масса, вот там и надо прописывать условие

Я скачала себе на компьютер весь каталог сайта, та и не смогла найти код в котором находится моя ссылка. Хотя не понимаю как это может быть. Как в песне - как такое может быть слово есть а ж.пы нет.
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #16 : 01.12.2016, 21:48:31 »

ТС, у вас есть доступ к сайту, на котором расположены ссылки на ваш внутренний сервер?
Вы, находясь во внутренней сети, с каким IP заходите с этого сайта по ссылке на внутренний ресурс?

Цитировать
Пользователи которые находятся во внутренней сети открыв внешний ресурс и перейдя по ссылки попадают в личный кабинет

Это реальность или только то, что вы хотите сделать, как здесь - как вы пишете http://wlc-net.ru/content/lichnyy-kabinet? Я подумал, что задача сейчас - красиво отогнать чужого юзера. В вашем примере сервер один, как я понял, а не 2 как у вас. Обрисуйте еще раз ситуацию - есть это, хочу это.
« Последнее редактирование: 01.12.2016, 22:16:11 от capricorn » Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3591


« Ответ #17 : 01.12.2016, 22:14:14 »

Перечитал 3 раза, ни черта так и не понял.
сначала проверяется IP нажавшего и сравнивается, если он совпадает с нашим белым, то отдавать ему ссылку
А какой он, "ваш белый"? Он вообще реально, не гипотетически, существует?
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #18 : 01.12.2016, 22:21:30 »

ТС, у вас есть доступ к сайту, на котором расположены ссылки на ваш внутренний сервер?

Да, только вчера его (Joomla) на хостинг поставила.

Вы, находясь во внутренней сети, с каким IP заходите с этого сайта по ссылке на внутренний ресурс?

Взяла мобильник, смартфон и зашла на сайт, потом нажала на ссылку и получила ошибку.

Это реальность или только то, что вы хотите сделать, как здесь - как вы пишете http://wlc-net.ru/content/lichnyy-kabinet? Я подумал, что задача сейчас - красиво отогнать чужого юзера. В вашем примере сервер один, как я понял, а не 2 как у вас.

Это реальность. Задача не красиво отогнать чужого юзера, а сделать красиво, чтоб зашедший на сайт не получил ошибку, а получил текст, ну то есть должно быть по феншую. Ссылка должна куда то вести для людей не из нашей сети. Не получится, значит будет так как есть.
Да, в моем случае два сайта, один на хостинге (там информация которую могут видеть все), другой локальный (не имеющий доступ в мир, на нем информация только для своих). В примере, наверное сайт один, я к нему не имею ни какого отношения и тем более доступа. Это только пример, можно еще в инете найти какие же.
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #19 : 01.12.2016, 22:22:46 »

ТС, сейчас речь не о белый или серый IP. Это не имеет отношения к вашему вопросу.

Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #20 : 01.12.2016, 22:30:33 »

Перечитал 3 раза, ни черта так и не понял.А какой он, "ваш белый"? Он вообще реально, не гипотетически, существует?

Конечно реальный, на внешнем интерфейсе моего роутера, я за него еще доплачиваю.
Не знаю как еще объяснить. Еще раз. Я находясь в локальной сети захожу на сайт который расположен на хостинге (мой сайт), и нажимаю пункт меню который меня должен перекинуть на сайт локальной сети http://192.168.0.1 далее сайт на хостинге проверяет мой IP если он соответствуют x.x.x.x, то отправляет меня на http://192.168.0.1 а так как мой локальный адрес 192.168.0.2 то я без проблем попадаю на внутренний сайт. Если зайдете Вы на мой сайт на хостинге то Ваш IP y.y.y.y не совпадет при сравнении и при нажатии по ссылки на внутренний ресурс Вам должно выйти предупреждение о том, что Вам сюда нельзя. Как то так.
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #21 : 01.12.2016, 22:33:18 »

ТС, сейчас речь не о белый или серый IP. Это не имеет отношения к вашему вопросу.

Если делать то что я задумала, наверное имеет. А как Вы на сайте который расположен на хостинге будете определять кто давит на ссылку? Я или Вы? Только по белому IP. Может есть варианты, определять не по IP , но я что то до них не додумалась.
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #22 : 01.12.2016, 22:41:31 »

Да наверное проще объяснить так. Нужно сделать пункт меню который при его нажатии если Ваш IP x.x.x.x направляет Вас на yandex.ru, а если Ваш IP отличатся от x.x.x.x то направляем Вас на Google.ru Так наверное будет понятнее.
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #23 : 01.12.2016, 22:42:23 »

Я ж вам выше написал. $_SERVER["REMOTE_ADDR"]

Цитировать
Нужно сделать пункт меню который при его нажатии если Ваш IP x.x.x.x направляет Вас на yandex.ru, а если Ваш IP отличатся от x.x.x.x то направляем Вас на Google.ru

вот оно что. и все?





« Последнее редактирование: 01.12.2016, 22:48:31 от capricorn » Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3591


« Ответ #24 : 01.12.2016, 22:45:11 »

Вместо - 192.168.0.0/24 написала наш внешний IP (вида х.х.х.х). К сожалению не помогло.
Что вы написали? И почему решили, что не помогло?
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #25 : 01.12.2016, 22:45:43 »

Я ж вам выше написал. $_SERVER["REMOTE_ADDR"]

Я видела Ваш код:

Код:
$link = 'ссылка1';
if ($_SERVER['REMOTE_ADDR'] != 'IP сервера') {
    $link = 'ссылка2';
}

Но уже писала, что не знаю где его написать.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3591


« Ответ #26 : 01.12.2016, 22:47:22 »

Вместо - 192.168.0.0/24 написала наш внешний IP (вида х.х.х.х). К сожалению не помогло.
Я видела Ваш код:
Но уже писала, что не знаю где его написать.
Так писали или нет? И если да, то что именно?
Записан
Julia_
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 81



« Ответ #27 : 01.12.2016, 22:47:52 »

Что вы написали? И почему решили, что не помогло?

Я написала свой белый IP такого вида x.x.x.x (вместо х цифры). Попробовала зайти с мобильника, на котором естественно другой IP и получила все тоже самое, что и до вашего предложения. То есть при нажатии на ссылку - нет такого файла.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3591


« Ответ #28 : 01.12.2016, 22:48:59 »

Не надо мне х.х.х.х. Что вы конкретно написали? Можете код сюда привести?
Записан
capricorn
Живу я здесь
******

Репутация: +86/-0
Offline Offline

Сообщений: 1414


« Ответ #29 : 01.12.2016, 22:49:57 »

Цитировать
То есть при нажатии на ссылку - нет такого файла.

Можете скриншот выложить?
Записан
Страниц: [1] 2 3  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet