Nginx是';我不喜欢重写

Nginx是';我不喜欢重写,nginx,rewrite,Nginx,Rewrite,我有一个使用子目录的站点,当前仅当尾部斜杠添加到URL(“”)时才起作用。当没有尾随斜杠时,我得到“无法连接到server domain.com:8080”(8080是为Nginx设置的侦听端口) 我尝试添加建议的重写(和),但它会导致整个虚拟主机出现“无法连接”错误 有没有其他方法可以添加尾随斜杠,我可以试试?或者,是否有一种方法可以将其配置为将URL视为目录(从而查找索引文件),而不考虑尾部斜杠的存在 编辑 Nginx.conf: user www-data; worker_processe

我有一个使用子目录的站点,当前仅当尾部斜杠添加到URL(“”)时才起作用。当没有尾随斜杠时,我得到“无法连接到server domain.com:8080”(8080是为Nginx设置的侦听端口)

我尝试添加建议的重写(和),但它会导致整个虚拟主机出现“无法连接”错误

有没有其他方法可以添加尾随斜杠,我可以试试?或者,是否有一种方法可以将其配置为将URL视为目录(从而查找索引文件),而不考虑尾部斜杠的存在

编辑

Nginx.conf:

user www-data;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    map $scheme $fastcgi_https { ## Detect when HTTPS is used
        default off;
        https on;
    }

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
服务器块:

server {
        listen 8080;
        server_name domain.com www.domain.com;
        include www.inc;

        root /var/vhosts/domain/current/frontend/;
        include php.inc;
}
Php.inc:

index index.php;

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    #fastcgi_param  ENVIRONMENT production;
    fastcgi_param HTTPS $fastcgi_https;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #fastcgi_intercept_errors on;
    fastcgi_connect_timeout 10;
    fastcgi_send_timeout 15;
    fastcgi_read_timeout 120;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    include fastcgi_params;
}
www.inc:

if ($host ~ ^([^\.]+\.com)) {
    rewrite ^/(.*)$ http://www.$host/$1 permanent;
}

将服务器{}块更改为

server {
    listen 8080;
    port_in_redirect off;
    server_name www.domain.com domain.com; #Order matters!
    include www.inc;

    root /var/vhosts/domain/current/frontend/;
    include php.inc;
}

将服务器{}块更改为

server {
    listen 8080;
    port_in_redirect off;
    server_name www.domain.com domain.com; #Order matters!
    include www.inc;

    root /var/vhosts/domain/current/frontend/;
    include php.inc;
}

请添加重写不起作用的服务器{}配置。已添加,以及包含。我只是在想,是万维网重写的问题吗?如果是这样的话,我可以修改它,在那里添加斜杠,但它是否适用于已经包含www的url?有更好的方法修改它吗?我需要www检查。请添加服务器{}配置,其中重写不起作用。添加,以及包括。我只是在想,是万维网重写的问题吗?如果是这样的话,我可以修改它,在那里添加斜杠,但它是否适用于已经包含www的url?有更好的方法修改它吗?我需要支票,还是没什么。我试着编辑重写行本身,因为服务器上有许多不同的站点(所以我必须小心)。我还试着用你的建议来替换现有的包含呼叫的站点,但仍然没有结果。如果URL类似于“”,您的建议是否有效?在我看来,它只适用于“domain.com/dir”。@Shauna,我终于得到了它。您的服务器侦听非标准端口,因此重定向必须包括$server\u port。请参阅更新版本。No。“无法在domain.com:8080上建立连接”。在“default”(即我用于其他站点的那个)设置下,理论上它已经转到端口8080,FWIW。不幸的是,在实践中,这并没有发生=/@肖娜,你到底有什么要求?你真的只有一个位置{}块吗?还是没有。我试着编辑重写行本身,因为服务器上有许多不同的站点(所以我必须小心)。我还试着用你的建议来替换现有的包含呼叫的站点,但仍然没有结果。如果URL类似于“”,您的建议是否有效?在我看来,它只适用于“domain.com/dir”。@Shauna,我终于得到了它。您的服务器侦听非标准端口,因此重定向必须包括$server\u port。请参阅更新版本。No。“无法在domain.com:8080上建立连接”。在“default”(即我用于其他站点的那个)设置下,理论上它已经转到端口8080,FWIW。不幸的是,在实践中,这并没有发生=/@肖娜,你到底有什么要求?您真的只有一个位置{}块吗?