Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2013, 20:47   #1
wolf950
Пользователь
 
Аватар для wolf950
 
Регистрация: 12.11.2008
Сообщений: 79
По умолчанию htaccess errordocument

Всем привет!
Как сделать что бы работал обработчик ошибок нормально?
т.е. если я ввожу
http://www.site.ru/index4.php3 - мне ошибку верно выдает
а если ввожу
http://www.site.ru/index.php/sub.php - то мне по сути ошибку тоже выдает, но теряются стили...

в хтакцесс следующее
Код:
ErrorDocument 400 /errors.php
ErrorDocument 403 /errors.php
ErrorDocument 404 /errors.php
ErrorDocument 405 /errors.php
ErrorDocument 408 /errors.php
ErrorDocument 500 /errors.php
ErrorDocument 502 /errors.php
ErrorDocument 504 /errors.php
в еррорс.пхп следующее
Код:
 $status = $_SERVER['REDIRECT_STATUS'];
 $codes = array(
       400 => array('400 Плохой запрос', 'Запрос не может быть обработан из-за синтаксической ошибки.'),
       403 => array('403 Запрещено', 'Сервер отказывает в выполнении вашего запроса.'),
       404 => array('404 Не найдено', 'Запрашиваемая страница не найдена на сервере.'),
       405 => array('405 Метод не допускается', 'Указанный в запросе метод не допускается для заданного ресурса.'),
       408 => array('408 Время ожидания истекло', 'Ваш браузер не отправил информацию на сервер за отведенное время.'),
       500 => array('500 Внутренняя ошибка сервера', 'Запрос не может быть обработан из-за внутренней ошибки сервера.'),
       502 => array('502 Плохой шлюз', 'Сервер получил неправильный ответ при попытке передачи запроса.'),
       504 => array('504 Истекло время ожидания шлюза', 'Вышестоящий сервер не ответил в установленное время.'),);
 $title = $codes[$status][0];
 $message = $codes[$status][1];
 if ($title == false || strlen($status) != 3) {
       $message = 'Код ошибки HTTP не правильный.';
 }
Код HTML:
<!DOCTYPE html>
<html lang="ru">
 <head>
  <meta charset="utf-8">
  <link rel="shortcut icon" href="img/favicon.ico">
  <?
   include("blocks/standsc.php");
  ?>
 </head>
 <body>
  <div class="container">
   <?
    include_once("blocks/header.php");
	include_once("blocks/menu.php");
   ?>
   <!-- Wrapper -->
   <div class="row-fluid">
   <?
   	include_once("blocks/left_column.php");
   ?>
   <!-- Right Column -->    
    <div class="span8">
     <h1><? echo $title ?></h1>
	 <? echo "<p>" . $message . " <a href='http://".$_SERVER['SERVER_NAME']."/index.php'>Перейти на главную.</a></p>"; ?>
     
	</div>
   </div>
   <?
    include_once("blocks/footer.php");
   ?>
  </div>
 </body>
</html>
вообщем если в адресе указана "папка" то у меня теряются стили, а если просто неправильно страница - то все гуд. Как быть?
Что не делается - все к лучшему!!!
wolf950 вне форума Ответить с цитированием
Старый 25.04.2013, 20:55   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

как быть ? - использовать абсолютные пути.. при встрече в адресной строке / / все ваши последующие пути начинают как бы из этих вложенных папок...
вот здесь вы прибегаете к точному указанию пути
Код:
<? echo "<p>" . $message . " <a href='http://".$_SERVER['SERVER_NAME']."/index.php'>Перейти на главную.</a></p>"; ?>
точно так же нужно делать и в других местах где у вас сейчас относительные пути...
или в самом начале принудительно единожды всегда менять текущую директорию на корень
ADSoft вне форума Ответить с цитированием
Старый 25.04.2013, 20:56   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

еще вариант
точно указывать на обработчик ошибки.... наверное так даже лучше
Код:
ErrorDocument 404 http://site.ru/errors.php
ADSoft вне форума Ответить с цитированием
Старый 25.04.2013, 21:01   #4
wolf950
Пользователь
 
Аватар для wolf950
 
Регистрация: 12.11.2008
Сообщений: 79
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
еще вариант
точно указывать на обработчик ошибки.... наверное так даже лучше
Код:
ErrorDocument 404 http://site.ru/errors.php
так не канает по-моему -(
Что не делается - все к лучшему!!!
wolf950 вне форума Ответить с цитированием
Старый 25.04.2013, 21:02   #5
wolf950
Пользователь
 
Аватар для wolf950
 
Регистрация: 12.11.2008
Сообщений: 79
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
как быть ? - использовать абсолютные пути.. при встрече в адресной строке / / все ваши последующие пути начинают как бы из этих вложенных папок...
вот здесь вы прибегаете к точному указанию пути
Код:
<? echo "<p>" . $message . " <a href='http://".$_SERVER['SERVER_NAME']."/index.php'>Перейти на главную.</a></p>"; ?>
точно так же нужно делать и в других местах где у вас сейчас относительные пути...
или в самом начале принудительно единожды всегда менять текущую директорию на корень
оке! А то меня муза сегодня не посещяет.. щя попробуем --))
Что не делается - все к лучшему!!!
wolf950 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
htaccess + wp offname WordPress и другие CMS 0 27.10.2012 11:05
.htaccess alimov7 Помощь студентам 1 17.10.2012 23:37
.htaccess kpachbiu PHP 2 26.04.2011 15:52
.htaccess soonner PHP 4 16.12.2010 23:51
.htaccess limon PHP 5 08.03.2009 01:28