За последние 24 часа нас посетили 22927 программистов и 1232 робота. Сейчас ищет 791 программист ...

Настройка веб-сервера Apache

Тема в разделе "PHP для новичков", создана пользователем George, 25 авг 2017.

Метки:
  1. George

    George Новичок

    С нами с:
    24 авг 2017
    Сообщения:
    6
    Симпатии:
    0
    Всем доброго времени суток! Требуется помошь опытных товарищей по настройке веб-сервера 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]
     
  2. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?$1 [QSA,L]

    Вот это должно работать как тебя надо.
     
  3. George

    George Новичок

    С нами с:
    24 авг 2017
    Сообщения:
    6
    Симпатии:
    0
    Благодарю за внимание, но проблема так и не решилась.
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Да поможет тебе @Ganzal! Первый пост не читал.
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Вообще должно работать. Обычно, если случается какой-то затык - существует отладка. В том числе и у рерайтера. Включаешь отладку, делаешь запрос, смотришь логику разрешения.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Автор, голый апач - это плохо. Поверх апача нужно натянуть nginx и настраивать роутинг уже в нем, если так хочется. К слову, в nginx настройка удобнее и понятнее сделана. И гибче. Грубо говоря, апач вообще не должен заниматься обработкой запросов удаленного клиента. Его клиентом должен быть nginx. Иначе уронить сервер оч легко.
     
  7. George

    George Новичок

    С нами с:
    24 авг 2017
    Сообщения:
    6
    Симпатии:
    0
    Благодарю за внимание! Провел отладку по следующему алгоритму:

    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

    Вывод - мне следует быть более внимательным.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    И поставить nginx перед apache!
     
  9. George

    George Новичок

    С нами с:
    24 авг 2017
    Сообщения:
    6
    Симпатии:
    0
    Благодарен за полезный совет