Форум программистов, компьютерный форум, киберфорум
Nginx
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 3

Php как текст в одном location

28.02.2016, 22:03. Показов 1480. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять почему в одном location не получается нормально отработать php.
Конфиг виртуалхоста:
Кликните здесь для просмотра всего текста
server {
listen 80;
server_name ta.site.ru;
access_log /var/log/nginx/ta/access.log main;
error_log /var/log/nginx/ta/error.log debug;
index distributor.xml;

root /var/www/site.ru;

location ~ /(ru|en) {
set $lang $1;
rewrite ^/(?:..)/$ /distributor.xml?lang=$lang last;
rewrite ^/(?:..)/orders/([0-9]+)/$ /distributor.xml?lang=$lang&part=orders&i dorders=$1 last;
}

location ~ /control {
index index.xml;
try_files $uri $uri/ @ctrl_path;
# if (!-f $request_filename) {
# rewrite ^/control/([0-9a-z]+)/$ /control/index.xml?path=$1 break;
# }
}

location @ctrl_path {
rewrite ^/control/(.*)$ /control/index.xml?path=$1 last;
}

# location ~ \.php$ {
# include fastcgi-php.conf;
# try_files $uri =404;
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_index index.xml;
# include fastcgi_params;
# }


location ~ \.(xml|php)$ {
include fastcgi-xml.conf;
}

location ~ /\.ht {
deny all;
}

}


fastcgi-xml.conf:
Кликните здесь для просмотра всего текста

fastcgi_split_path_info ^(.+\.(?:xml|php))(/.+)$;
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.xml;
include fastcgi_params;


кусок из лога при запросе: ta.site.ru/control/asd/
Кликните здесь для просмотра всего текста
2016/02/28 08:12:21 [notice] 9253#9253: *2 "^/control/(.*)$" matches "/control/asd/", client: 192.168.10.44, server: ta.site.ru, request: "GET /control/asd/ HTTP/1.1", host: "ta.site.ru"
2016/02/28 08:12:21 [notice] 9253#9253: *2 rewritten data: "/control/index.xml", args: "path=asd/", client: 192.168.10.44, server: ta.site.ru, request: "GET /control/asd/ HTTP/1.1", host: "ta.site.ru"

==> ta/access.log <==
192.168.10.44 - - [28/Feb/2016:08:12:21 +0300] "GET /control/asd/ HTTP/1.1" 200 102 "-" "curl/7.38.0" "-"

==> ta/error.log <==
2016/02/28 08:12:21 [info] 9253#9253: *2 client 192.168.10.44 closed keepalive connection


Собственно location /(ru|en) - работает прекрасно, а вот /сontrol - отдает файлы php и xml текстом.
xml-файлы на стороне сервера - по сути обычный пхп скрипт.
Под коментами отражены некоторые попытки "завести" этот сайт как надо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2016, 22:03
Ответы с готовыми решениями:

Текст,картинки в одном,как сделать
Например у меня есть 2 строчки Текст ссылка на картинку У меня стоит проверка на то картинка это или нет (просто проверяю строку...

Nav-tab и php location
&lt;ul class=&quot;nav nav-tabs&quot;&gt; &lt;li&gt;&lt;a data-toggle=&quot;tab&quot; href=&quot;#home&quot;&gt;Home&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a data-toggle=&quot;tab&quot;...

Как объединить 2 MySQL базы, в одном php файле
Коллеги СРОЧНО! помогите с такой проблемой, на одном сайте есть 2 базы данных MySQL и надо подключить их в одном php-файле. Прошу помогите...

4
1137 / 685 / 412
Регистрация: 07.11.2015
Сообщений: 1,102
29.02.2016, 01:59
Лучший ответ Сообщение было отмечено xpavlus как решение

Решение

http://nginx.org/ru/docs/http/... l#location
Чтобы найти location, соответствующий запросу, вначале проверяются location’ы, заданные префиксными строками (префиксные location’ы). Среди них ищется location с совпадающим префиксом максимальной длины и запоминается. Затем проверяются регулярные выражения, в порядке их следования в конфигурационном файле. Проверка регулярных выражений прекращается после первого же совпадения, и используется соответствующая конфигурация. Если совпадение с регулярным выражением не найдено, то используется конфигурация запомненного ранее префиксного location’а.
После rewrite на /control/index.xml запрос опять попадает в location ~ /control.
Можно поменять местами location ~ \.(xml|php)$ и location ~ /control.
Или поправить содержимое @ctrl_path.
location @ctrl_path {
rewrite ^/control/(.*)$ /control/index.xml?path=$1 break;
include fastcgi-xml.conf;
}
1
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 3
29.02.2016, 08:29  [ТС]
Спасибо. Помогло. Интуитивно я понимал что это происходит, но не придумал как это обойти. Еще раз спасибо за совет.

Добавлено через 14 минут
А есть мысли почему location ~ /(ru|en) обрабатывает пхп нормально?
0
1137 / 685 / 412
Регистрация: 07.11.2015
Сообщений: 1,102
29.02.2016, 13:41
Цитата Сообщение от xpavlus Посмотреть сообщение
А есть мысли почему location ~ /(ru|en) обрабатывает пхп нормально?
Ну, так после rewrite на /distributor.xml снова проверяются регулярные выражения, в порядке их следования в конфигурационном файле.
Адрес /distributor.xml не совпадает с шаблонами /(ru|en) и /control.
Совпадение будет только с \.(xml|php)$.
1
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 3
29.02.2016, 16:27  [ТС]
мда... Это ж так очевидно. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.02.2016, 16:27
Помогаю со студенческими работами здесь

Почему в винде не работает header('Location: index.php'); ?
Почему в винде не работает header('Location: index.php'); ?

Работа с несколькими таблицами из БД в одном create.php и update.php в YII2
Всем привет. Нужна ваша помощь. В общем есть 3 таблицы в БД, в первой хранятся &quot;Темы&quot;, во второй хранятся &quot;Вопросы&quot;, третья...

Можно ли использовать PHP 5.6 и PHP 7 на одном компьютере
Всем привет, траблы с php7 поставил я на убунту себе 7, до этого стоял 5.6 и сейчас тоже стоит. Удалить его не удалил. В каталоге...

button1.Location = new System.Drawing.Point(10, 10); Тут создается новый экземпляр button1.Location, куда девается старый?
Или его значение изменятся? Зачем тогда тут нужен &quot;new&quot;?

Как оформить текст в PHP
Как оформить текст в PHP файле? &lt;?php if (isset($_POST)) { $firstname = $_POST; if ($firstname == '') { unset($firstname);} }...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru