簡體   English   中英

nginx / php-fpm,位置異常 - 404

[英]nginx/php-fpm with location exception - 404

我已經配置了http-> https重定向+非www-> www重定向。 我想排除兩個路徑,以便它們不會被重定向到https。 我嘗試了很多可能的配置,我要么得到404,要么重定向到https版本。

這是當前配置,當嘗試獲取/ loc2 / path(#curl http://www.server.dev/loc2/18a9BM4Lay )時返回404:

server {
    listen 80;
    listen [::]:80;
    server_name server.dev;
    location / {
return 301 https://$server_name$request_uri;
    }
    location /loc1/ {
        try_files $uri $uri/ /index.php?$args;

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

server {
    listen 80;
    listen [::]:80;
    server_name www.server.dev;
    root /var/www/web/server/public;

    location / {
#    return 301 https://$server_name$request_uri;
    }

        location ^~ /loc1/ {
#        root /var/www/web/server/public;
    index index.php;
#        try_files $uri $uri/ /index.php?$args;
        include pool_web.conf;
        }

        location ^~ /loc2/ {
#       root /var/www/web/server/public;
    index index.php;
#        try_files $uri $uri/ /index.php?$args;
      location ~ \.php$ {
              # regex to split $uri to $fastcgi_script_name and $fastcgi_path
              fastcgi_split_path_info ^(.+\.php)(/.+)$;
              # Check that the PHP script exists before passing it
              try_files $fastcgi_script_name =404;
              # Bypass the fact that try_files resets $fastcgi_path_info
              # see: http://trac.nginx.org/nginx/ticket/321
              set $path_info $fastcgi_path_info;
              fastcgi_param PATH_INFO $path_info;
              include fastcgi.conf;
              fastcgi_read_timeout 360s;
              fastcgi_intercept_errors on;

              fastcgi_pass unix:/var/run/server-php7.0-fpm.sock;
    }
#   include pool_web.conf;

      }

        }


server {
#    listen 80;
#    listen [::]:80;

    listen 443 ssl http2;

     ssl_certificate /etc/ssl/server.crt;
     ssl_certificate_key /etc/ssl/server.key;

    server_name server.dev;
    rewrite     ^   $scheme://www.server.dev$request_uri? permanent;
}

server {
#    listen 80;

    listen 443 ssl http2;

     ssl_certificate /etc/ssl/server.crt;
     ssl_certificate_key /etc/ssl/server.key;

    server_name www.server.dev;

    root /var/www/web/server/public;

    index index.php;

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

    location /images/ {
        try_files $uri =404;
    }

    location ~ \.php$ {
        include pool_web.conf;
    }

    location ~ \.(css|htc|less|js|js2|js3|js4)$ {
        expires 31536000s;
        add_header Pragma "public";
        add_header Cache-Control "max-age=31536000, public";
    }

    location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|woff|xla|xls|xlsx|xlt|xlw|zip)$ {
        expires 31536000s;
        add_header Pragma "public";
        add_header Cache-Control "max-age=31536000, public";
    }
}

您需要添加try_files語句來定義默認處理程序。 index指令僅在指定目錄時有效。

例如:

location ^~ /loc2/ {
    try_files $uri $uri/ /loc2/index.php;
    ...
}

請參閱此文檔了解詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM