Добрый вечер, уже
2 3 дня бьюсь над проблемой,
location ~* ^/.+\.(php)$ {
— регулярное выражение из конфига nginx, которое нам говорит, что если запрашиваемый файл *.php, то этот location исполняется.
Передо мною стоит задача: сделать location исключающий php. То есть если в запросе НЕ php, то location обрабатывается.
Вариант
~* .+(!?php)$
у nginx не проходит (он упорно продолжает запрашивать статику с апача, видимо regexp там особенный..).
~*
— в nginx означает без учета регистра.
Есть вариант
~* ^(.+?)[^/.php]$
, но он не отрабатывает
человеческие ссылки вида
/link2/link3
, но отрабатывает
/link2/link3/
(в конце стоит слеш). И приходится переопределять в других location файлы
.h
,
.p
,
.ph
,
.hp
,
.*ph
и
.*php
.
Помогите пожалуйста создать верный location и направить мой nginx на истинный путь.
Если вариант
все в 1 не реализуем, то какие 2 location создать, учитывая специфику nginx?
nginx с оффсайта, скачаны исходники, сконфигурированы под нужны и
make && make install
.
submod
—
substitutions4nginx
мод из
этого топика.
nginx -V
nginx version: nginx/0.8.54<br/>
built by gcc 4.4.5 (Debian 4.4.5-8)<br/>
TLS SNI support enabled<br/>
configure arguments: --with-http_ssl_module --with-pcre --with-http_dav_module --with-http_realip_module --with-http_stub_status_module --with-http_sub_module --with-http_addition_module --add-module=/usr/udata/nginx-0.8.54/submod