Всем доброго времени суток! Требуется помошь опытных товарищей по настройке веб-сервера Apache. Много времени потратил в поисках решении проблемы, но ничего полезного так и не нашел. Собственными силами удалось выяснить, что проблема в самой настройке веб-сервера. Копировал директивы движка перезаписи веб-сервера Apache из оффициальных сайтов разработчиков фреймворков PHP и встовлял в файл гипертекстового доступа (.htaccess), но проблема осталась проблемой. Эта настройка веб-сервера используются для того, чтобы архитектурный шаблон построения приложении MVC работал должным образом (если физический ресурс не сушествует по указанному веб-адресу, передать управление скрипту index.php). Паттерн MVC работает прекрасно, но возникает главный косяк - если с самого начала запускаю другой скрипт, допустим customer.php, скрипт index.php запусукается раньше скрипта customer.php (в этих файлах набраны маленькие куски кода на сценарном языке PHP для иследования поведения веб сервера, в коде нет никаких директив включении файлов). Для иследования поведения веб-сервера Apache: 1. Создал два файла - index.php и customer.php 2. Открыл файл index.php в текстовом редакторе и набрал команду создания текстового файла list.txt 3. Открыл файл customer.php в текстовом редакторе и набрал команду вывода сообшения "Hello!" 4. Сперва запустил скрипт customer.php и в корневом каталоге (webroot), который видит веб-сервер, создан файл list.txt, не смотря на то, что скрипт index.php вообше не был запущен по моей команде 5. Удаляю файл .htaccess, все возвращается в нормальное русло Не понимаю, по моему мнению, файл index.php не должен запускатся потому, что по условию, файл customer.php физически сушествует на жестком диске. Вот и содержимое файла .htaccess: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ index.php/$1 [L,QSA] Пробывал и другие варианты, но ... RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?$1 [QSA,L] Вот это должно работать как тебя надо.
Вообще должно работать. Обычно, если случается какой-то затык - существует отладка. В том числе и у рерайтера. Включаешь отладку, делаешь запрос, смотришь логику разрешения.
Автор, голый апач - это плохо. Поверх апача нужно натянуть nginx и настраивать роутинг уже в нем, если так хочется. К слову, в nginx настройка удобнее и понятнее сделана. И гибче. Грубо говоря, апач вообще не должен заниматься обработкой запросов удаленного клиента. Его клиентом должен быть nginx. Иначе уронить сервер оч легко.
Благодарю за внимание! Провел отладку по следующему алгоритму: 1. Открыл файл index.php и ввёл инструкцию file_put_contents("log.txt", $_SERVER["REQUEST_URI"]) 2. Опять запустил сценарий customer.php 3. Проверил содержимое файла log.txt (файл содержит строку /favicon.ico) 4. Добавил директиву RewriteCond %{REQUEST_URI} !=/favicon.ico Вывод - мне следует быть более внимательным.