Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выход на 404 ошибку??
 
 автор: Alex Boxgorn   (17.04.2013 в 12:24)   письмо автору
 
 

Добрый день!
Есть проблема, которую я не могу своими силами решить, даже почитав доку по командам. Видимо регулярные выражения это не для меня :-(
Так вот, в корневой папке в файле .HTACCESS на основании различных примеров я прописал следующее (см.ниже блок). Вроде бы все работает хорошо, но я не могу организовать переход на несуществующую страницу т.к. команда
RewriteRule (.+) /_runsite_test.php?do=$1 [L]
все перехватывает на себя и внутри обработчика _runsite_test.php перебрасывает посетителя (при ненахождении страницы) на главную страницу сайта. Выходит, что на сайте на каждую несуществующую страницу производится переход на главную страницу. В яндексе уже 1000 чтраниц проиндексировалось, а их всего 90. Как можно сделать условие, чтобы команда
RewriteRule (.+) /_runsite_test.php?do=$1 [L]
пропускалась при заходе к примеру на несуществующую страницу с именем ttt.php ?
---- содержимое файла .htaccess -------
AddDefaultCharset windows-1251 
AddHandler application/x-httpd-php .phtml
php_flag magic_quotes_gpc Off 
php_flag magic_quotes_runtime Off 
 
Options -Indexes
DirectoryIndex _runsite_test.php /admin/index.php
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) /_runsite_test.php?do=$1 [L]

  Ответить  
 
 автор: Sfinks   (17.04.2013 в 14:55)   письмо автору
 
   для: Alex Boxgorn   (17.04.2013 в 12:24)
 

При таких правилах скрипт _runsite_test.php у вас работает как роутер (как правило его так и называют - router.php).

Соответственно он и отвечает за разбор содержимого и в нем же вам необходимо регулировать поведение. Например так:
<?php
  
switch( $_GET['do'] )
  {
    case 
'index.php':
      
// делаем что-то, что относится к выводу содержимого сайта
    
break;

    case 
'register.php':
      
// делаем что-то, что относится к регистрации
    
break;

    case 
'auth.php':
      
// делаем что-то, что относится к авторизации
    
break;

    default: 
      
// выводим страницу 404
      
header('HTTP/1.1 404 Not Found');
      exit( 
'Страница не найдена' );
  }
?>

  Ответить  
 
 автор: Alex Boxgorn   (17.04.2013 в 20:18)   письмо автору
 
   для: Sfinks   (17.04.2013 в 14:55)
 

Спасибо все заработало!! Я разобрался и сделал как вы рекомендовали.
Но как теперь вывести свою страницу при ошибке 404, чтобы посетитель ее увидел и смог вернуться на сайт?

  Ответить  
 
 автор: Sfinks   (21.04.2013 в 08:29)   письмо автору
 
   для: Alex Boxgorn   (17.04.2013 в 20:18)
 

>Но как теперь вывести свою страницу при ошибке 404, чтобы посетитель ее увидел и смог вернуться на сайт?
<?php
...................
    default:  
      
// выводим страницу 404 
      
header('HTTP/1.1 404 Not Found');
      
// ну вот собственно тут вы можете делать что хотите
      // работать с базой, сохранять статистику, формировать и выводить
      // любой html-код.
      
exit;
...................
?>
Или я не правильно вопрос понял?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования