Nginx - 重写或内部重定向循环

时间:2014-03-19 10:20:57

标签: php nginx rewrite

我使用nginx配置非常简单,它适用于/ usr / share / nginx / www /.

子目录中的所有php站点

但现在我想在一个带有重写规则的子目录中创建一个新项目。 所以我决定在默认情况下为此创建一个.conf。 但是重写不起作用导致错误"重写或内部重定向循环"。

默认

server {
    listen 80 default_server;
    # listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/www;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ /index.html;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }

    location /doc/ {
            alias /usr/share/doc/;
            autoindex on;
            allow 127.0.0.1;
            allow ::1;
            deny all;
    }

    location ~ \.php$ {
            try_files $uri =404;
            # fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

            # With php5-cgi alone:
            # fastcgi_pass 127.0.0.1:9000;
            # With php5-fpm:
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_intercept_errors on;
    }

    location ~ /\. {
            access_log off;
            log_not_found off;
            deny all;
    }
}

newproject.conf

# nginx configuration
autoindex off;

location /newproject/ {
    if (!-e $request_filename) {
            rewrite ^/newproject/(.+)$ /newproject/index.php?url=$1 break;
    }
}

1 个答案:

答案 0 :(得分:0)

        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;

这部分关于回归到404是错误的。可能你错过了=404,这导致了重定向周期(它一次又一次地重定向到/index.html。)

请注明the documentation

  

如果未找到任何文件,则会进行内部重定向到最后一个参数中指定的uri。

相关问题