Поставил на Fedora Core 5 Apache 2.2.4 + PHP 5.2.1. Все ставил из исходников и Apache скомпилировал с mod_rewrite. Я в этом убедился из phpinfo() и httpd -l.
Нужно решить слдующую задачу: Чтобы пользователя сайта при обращения ко всем несуществующим файлам и каталогам перебрасывало на index.php - казалось бы куда уж проще.
Сделал виртуальный хост AllowOverride All поставил для поддержки .htaccess
Залил для тестирования в директория виртуального хоста три файла - index.php test.php и .htaccess В .htaccess прописал слудующее:
RewriteEngine On RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php [L,QSA,NC]
Все по документации!!! После всех этих телодвижений и рестарта Apache при обращении к странице test.php (которая 100% лежит в директории) перекидывает на страницу index.php. Все остальные страницы, которых нет в директории он конечно тоже перебрасывает на index.php но почему он тоже самое делает с директориями и страницами которые там есть???????????
Добавил в httpd.conf в настройки виртуального хоста логи для rewrite
RewriteLog "/usr/local/apache2/logs/rewrite.log" RewriteLogLevel 8
После этого запросил страницу mysite.ru/test.php (она там есть и по всем rewrite правилам я должен был её увидеть в браузере) Вроде бы все отлично но почему он делает вот это
81.176.33.35 - - [17/May/2007:01:29:57 +0400] [v54.ru/sid#9146e78][rid#92c6840/initial] (3) [perdir /home/v54/] applying pattern '(.*)' to uri 'test.php' 81.176.33.35 - - [17/May/2007:01:29:57 +0400] [v54.ru/sid#9146e78][rid#92c6840/initial] (2) [perdir /home/v54/] rewrite 'test.php' -> 'index.php'
Хотя до этого он нашел этот файл в директории:
81.176.33.35 - - [17/May/2007:01:29:57 +0400] [v54.ru/sid#9146e78][rid#92c6840/initial] (4) [perdir /home/v54/] RewriteCond: input='/home/v54/test.php' pattern='!-f' => not-matched
Как решить эту проблему? Очень срочно!!!!!!!!!!!!!!!!!!!!!