2015-12-11 4 views
2

У меня есть следующие блоки место в блоке сервера Nginx конфигурации:Использование регулярных выражений совпадает с Nginx место в try_files директиве

location /eci-new/public { 
    try_files $uri $uri/ /eci-new/public/index.php?$query_string; 
} 

location /eci-integration/public { 
    try_files $uri $uri/ /eci-integration/public/index.php?$query_string; 
} 

это работает, но мне нужно будет добавить больше места в будущем, я бы хотели бы уменьшить, что только один блок местоположения, которые используют Uri сегмент dinamicaly применять try_files директивы конфигурации, как это:

location ~ /(.*)/public { 
    try_files $uri $uri/ /$1/public/index.php?$query_string; 
} 

Но я получаю это сообщение в консоли в хроме при попытке загрузить страницу.

Ресурс интерпретируется как Документ, но переносится приложением MIME-типа/октетом-потоком: «http://33.33.33.33/eci-new/public/rms/product-normalization».

Как настроить конфигурацию nginx правильно? и отправить запрос на процессор php?

ответ

1

Поскольку вы изменили расположение префикса на местоположение регулярного выражения, оно теперь конфликтует с вашим местоположением php. Таким образом, URI /eci-new/public/index.php не интерпретируется как скрипт php.

Переместить расположение PHP (что-то вроде location ~* \.php), так что это выше нового места регулярного выражения, и, следовательно, имеет приоритет для сценариев PHP.

Кроме того, вы можете подтянуть свой регулярное выражение и добавить ^ в начале:

location ~ ^/(.*)/public { ... } 

См this document подробности.