imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 27.06.2006, 16:33     # 1
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Question Как инициировать ошибку 404?

Помогите придумать:
Как можно заставить апач отработать условие в htaccess по обработке ошибки 404, если вызван файл, который реально существует?

Т.е. есть некий адрес http://server.ru/folder/ там реально лежит файл index.php, который работает, проверяет какие-то условия и при определённых условиях должна показаться заранее сделанная страница об ошибке 404. Причём редиректить на эту страницу не пойдёт: в строке адреса должен остаться тот адрес, что набрали. Этот редирект должен сделать апач, согласно своим правилам.
Self Author вне форума  
Старый 27.06.2006, 16:44     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Любое правило изначально работает для всех файлов, независимо от их существования. А если очень хочется задействовать ErrorDocument, то можно написать реврайт на заведомо несуществующий файл.
RaZEr вне форума  
Старый 27.06.2006, 17:00     # 3
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Тогда в строке адреса будет торчать этот несуществующий файл...
Self Author вне форума  
Старый 27.06.2006, 17:15     # 4
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
Self Author
>Тогда в строке адреса будет торчать этот несуществующий файл...
RaZEr грит про реврайт, а не редирект.
А еще тут глянь: http://ru.php.net/header (про 404 там есть)
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 27.06.2006, 17:26     # 5
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Цитата:
Madness:
RaZEr грит про реврайт, а не редирект.
А еще тут глянь: http://ru.php.net/header (про 404 там есть)
Про реврайт не знаю ничего. Где об этом можно посмотреть?
А ссылка не открывается...
Self Author вне форума  
Старый 27.06.2006, 17:34     # 6
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
Self Author
>Про реврайт не знаю ничего. Где об этом можно посмотреть?
Да ладно, а это чья тема?

>А ссылка не открывается...
Зайди на php.net и в поиске набери header.
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 27.06.2006, 18:12     # 7
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Цитата:
Madness:
Да ладно, а это чья тема?
Тьфу! Блин...
Я думал что другое...
Так как этот реврайт мне поможет? Откуда htaccess узнает, что какой-то скрипт решил закосить под несуществующий?
Self Author вне форума  
Старый 28.06.2006, 00:40     # 8
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
Self Author
>Откуда htaccess узнает, что какой-то скрипт решил закосить под несуществующий?
Тогда сам скрипт пусть думает косить ему иль нет => http://ru.php.net/header
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 28.06.2006, 00:59     # 9
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Цитата:
Madness:
Тогда сам скрипт пусть думает косить ему иль нет => http://ru.php.net/header
Хидеры дают команду браузеру, а не апачу. Апач соединил браузер со скриптом, и ему наплевать, что там между ними происходит. Скрипт сообщает браузеру заголовки, и уже браузер нарисует свою страницу 404.
Self Author вне форума  
Старый 28.06.2006, 10:09     # 10
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
Self Author
Я вот не пойму, а что мешает скрипту нарисовать свою страницу 404?
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 28.06.2006, 11:49     # 11
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Всё дело в "цене" вопроса. Есть вариант: редирект на некий nopage.htm, после которого будет показана страница 404. Минус - светится этот nopage.htm. А теперь, чтобы от этого избавится, нужно что-то сделать. И чем больше всего надо делать, тем "дороже" становится это решение. Скрипты анализируют URI, которым были вызваны, от этого показывают что-то по-разному. И это получается как бы "правило". Для того, чтобы каждый из этих скриптов мог сделать свою страницу 404, нужно писать "исключение", соизмеримое с этими правилами. А это делать не хочется.

Спасибо всем, кто предлагал решения. Жаль, что "красивого" решения нет.
Self Author вне форума  
Старый 11.07.2006, 10:43     # 12
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Может так:
.htaccess:
Код:
ErrorDocument 404 /404_err.php
В index.php:
Код:
<?
//Какие-то проверки, и если решили что надо 404 ошибку:
header("HTTP/1.0 404 Not Found");
virtual('404_err.php');
?>
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 11.07.2006, 12:00     # 13
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Hubbitus!
Header - это сообщение от сервера браузеру. А мне нужно, чтобы сервер повёл себя так, будто файла нет.
Self Author вне форума  
Старый 11.07.2006, 13:24     # 14
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
Self Author
Объясни, пожалста, внятно и понятно что нужно и чем тебя не устраивают вышеописанные варианты.
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 12.07.2006, 10:31     # 15
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Self Author:
Header - это сообщение от сервера браузеру.
Естественно. Только не браузеру, а вообще, любому клиенту.

Цитата:
Self Author:
А мне нужно, чтобы сервер повёл себя так, будто файла нет.
Ну мой пример это и эмулирует.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 12.07.2006, 12:56     # 16
Sam Dark
Member
 
Аватар для Sam Dark
 
Регистрация: 03.07.2003
Адрес: Voronezh, Russia
Пол: Male
Сообщения: 294

Sam Dark МолодецSam Dark МолодецSam Dark Молодец
Self Author
Допустим, у нас есть вот такая запись в нашем htaccess:
ErrorDocument 404 /error.php

Первой строкой в error.php отдаём заголовок (как уже писал Hubbitus):
header("HTTP/1.0 404 Not Found");

Далее выводим сообщение аля страница не найдена.

Теперь дописываем rewrite-ы:
RewriteEngine on
RewriteRule урл_для_404 /error.php
__________________
Это жжжж неспроста...
Sam Dark вне форума  
Старый 13.07.2006, 09:59     # 17
Goryn
::VIP::
 
Аватар для Goryn
 
Регистрация: 06.03.2003
Адрес: DZ, LBP, Moscow
Пол: Male
Сообщения: 633

Goryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собойGoryn Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от Sam Dark
Теперь дописываем rewrite-ы:
RewriteEngine on
RewriteRule урл_для_404 /error.php
Честно говоря ща сам хотел предложить вариант с ModRewrite
__________________
Меня многие спрашивают, как я живу с тремя головами... На самом деле, я триедин, как Великие Бобы!
Goryn вне форума  
Старый 13.07.2006, 10:23     # 18
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Sam Dark, чего-то я тебя не понял. Ну выдали мы 404 из скрипта, дальше-то что? Реврайты твои не сработают же, потому как скрипт запущен index.php, и он выдаст браузеру именно то что в нем напишешь, после этого заголовка.

Как вариант с реврайтом, можно вместо вызова virtual в моем примере, сделать попробовать переадресацию на какой-то несуществующий элемент, и его уже реврайтом перезаписать по желанию.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.

Последний раз редактировалось Hubbitus; 13.07.2006 в 10:27.
Hubbitus вне форума  
Старый 13.07.2006, 11:41     # 19
Self Author
Junior Member
 
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52

Self Author Путь к славе только начался
Цитата:
Sam Dark:
Теперь дописываем rewrite-ы:
RewriteEngine on
RewriteRule урл_для_404 /error.php
А я разве могу динамически править или генерировать скриптом htaccess? Ведь мне сейчас этот урл надо скрывать, а через 5 минут уже не надо...
Self Author вне форума  
Старый 13.07.2006, 11:47     # 20
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
А я разве могу динамически править или генерировать скриптом htaccess?
Почему нет? Или RewriteMap CGI.
RaZEr вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:01.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.