2016-07-23 3 views
2

У меня есть следующие Nginx конфигурации для URL RewriteNginx отключить URL Rewrite для конкретного пути/URL

location/{ ##merge 
    try_files $uri $uri/ /index.php?q=$uri&$args; 
} 

location /devtools/phpmyadmin/ { ##merge 
    root /var/www/domain.tld/web; 

    location ~ \.php$ { 
     try_files $uri =404; 
     include /etc/nginx/fastcgi_params; 
     fastcgi_pass unix:/var/lib/php5-fpm/web2.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_intercept_errors on; 
    } 
} 

в каталоге /var/www/domain.tld/web/ имеют /api/ каталог, и я хочу отключить для URL Rewrite для этого. Так что если я хочу получить доступ с URL-адреса с помощью index.php: http://domain.tld/api/index.php/function/method

Как изменить конфигурационный файл nginx?


Edit:

Я стараюсь следующий переписывают, но не работает:

location = /api { 
    rewrite^/api/index.php; 
} 
+0

Есть ли директива 'root' над первым блоком' location'? У вас есть блок 'location ~ \ .php $' на уровне блока 'server'? –

+0

@RichardSmith Нет директивы root над первым блоком местоположения, а другой вопрос нет - я редактирую конфигурацию nginx из ispconfig – wpdaniel

ответ

1

Признаюсь, я не понимаю ваш конфигурационный файл. Как правило, вы должны определить root, чтобы наследоваться всеми (или большинством) ваших блоков location. И обычно отдельный блок location ~ \.php$ для обработки загружаемых сценариев .php в PHP-процессор через FastCGI.

Игнорирования вашего location /devtools/phpmyadmin/ блока на данный момент, типичная реализация будет выглядеть следующим образом:

root /var/www/domain.tld/web; 

location/{ 
    try_files $uri $uri/ /index.php?q=$uri&$args; 
} 

location ~ \.php$ { 
    try_files $uri =404; 
    include /etc/nginx/fastcgi_params; 
    fastcgi_pass unix:/var/lib/php5-fpm/web2.sock; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_intercept_errors on; 
} 

В nginx директивах documented here.

Если вы хотите URIs, которые начинаются с /api использовать другой контроллер, можно добавить:

location /api { 
    try_files $uri $uri/ /api/index.php; 
} 

Я не могу видеть цель location /devtools/phpmyadmin/ блока, так как это, кажется, не добавить больше функциональных возможностей.

+0

Это работает, спасибо! – wpdaniel

Смежные вопросы