Отключить правило для определенного каталога (ов) - PullRequest
0 голосов
/ 27 июня 2018

Я использую это правило:

if ($request_uri ~ ^/([^?]*)\.(php|html|htm)($|\?)) {  
    return 302 /$1?$args;  
}

чтобы удалить расширение .php / .html / .htm для URL, и теперь я бы хотел отключить это правило для директории типа: /site/ajax.

Это моя полная конфигурация сервера:

server {
    server_name www.example.net;
    listen 443;
    root   /var/www/html;
    index index.php;

    ssl on;
    ssl_certificate /path/cert.pem;
    ssl_certificate_key /path/privkey.pem;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location /site/ajax/ {
        index index.php;
        break;
    }

    #Remove .php | .html | .htm
    if ($request_uri ~ ^/([^?]*)\.(php|html|htm)($|\?)) {  
        return 302 /$1?$args;  
    }


    location / {
        try_files $uri $uri/ $uri.html $uri.php?$args;
    }

    location /site/query {
        try_files $uri $uri/ $uri.html $uri.php?$args;
        index manage.php; #Change index for query folder
    }

    error_page 404 /404.html;
    error_page 403 /403.html;

    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;
}

это возможно?

1 Ответ

0 голосов
/ 27 июня 2018

Одним из решений является использование отрицательного прогнозного утверждения в регулярном выражении. Например:

^/(?!site/ajax)([^?]*)\.(php|html|htm)($|\?))
...