.htaccess RewriteRule 到 nginx 重写规则。如何操作?

.htaccess RewriteRule 到 nginx 重写规则。如何操作?

我有一个远程 Apache 服务器使用 php。

文件夹结构是:

/html/api/v3/.htaccess
/html/api/v3/getData.php

.htaccess包含:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^get/estimates/?$ getData.php?estimatesFilter=all [L]
RewriteRule ^get/estimates/(\d+)/?$ getData.php?estimateId=$1 [L]

(非物理存在)url 外部端点是:

/html/api/v3/get/estimates ---now points to---> getData.php?estimatesFilter=all
/html/api/v3/get/estimates/1001 ---now points to---> getData.php?estimateId=$1

我有一个本地 nginx 服务器以 FastCGI 模式运行 php。

worker_processes  1;

error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    # Max value 16384
    worker_connections  8192;
    # Accept multiple connections
    multi_accept on;
}

# Settings that affect all server blocks
http {
    include php_processes.conf;
    include       mime.types;
    default_type  application/octet-stream;

    access_log  logs/access.log;

    sendfile on;

    keepalive_timeout  65;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1 SSLv3;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS; 
    ssl_prefer_server_ciphers on;
    gzip  on;
    # http server

# Begin HTTP Server
server {
    listen 80; # IPv4
    server_name localhost;

    ## Parametrization using hostname of access and log filenames.
    access_log logs/localhost_access.log;
    error_log logs/localhost_error.log;

    ## Root and index files.
    root html;
    index  index.php index.html index.htm;

    ## If no favicon exists return a 204 (no content error).
    location = /favicon.ico {
        try_files $uri =204;
        log_not_found off;
        access_log off;
    }

    ## Don't log robots.txt requests.
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    ## Try the requested URI as files before handling it to PHP.
    location / {

        ## Regular PHP processing.
        location ~ \.php$ {
            try_files  $uri =404;
            fastcgi_pass   php_processes;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        ## Static files
        location ~* \.(?:css|gif|htc|ico|js|jpe?g|png|swf)$ {
            expires max;
            log_not_found off;
            ## No need to bleed constant updates. Send the all shebang in one
            ## fell swoop.
            tcp_nodelay off;
            ## Set the OS file cache.
            open_file_cache max=1000 inactive=120s;
            open_file_cache_valid 45s;
            open_file_cache_min_uses 2;
            open_file_cache_errors off;
        }

        ## Keep a tab on the 'big' static files.
        location ~* ^.+\.(?:ogg|pdf|pptx?)$ {
            expires 30d;
            ## No need to bleed constant updates. Send the all shebang in one
            ## fell swoop.
            tcp_nodelay off;
        }

    } # / location

} 
# End HTTP Server

}

我如何在 nginx 中执行相同操作?我已经耗尽耐心来解决这个问题了……

答案1

默认的 Web 根目录为 /var/www/html/

因此,你需要使用http://yourdomain.com/api/v3/getData.php

相关内容