Nginx是';我不喜欢重写
我有一个使用子目录的站点,当前仅当尾部斜杠添加到URL(“”)时才起作用。当没有尾随斜杠时,我得到“无法连接到server domain.com:8080”(8080是为Nginx设置的侦听端口) 我尝试添加建议的重写(和),但它会导致整个虚拟主机出现“无法连接”错误 有没有其他方法可以添加尾随斜杠,我可以试试?或者,是否有一种方法可以将其配置为将URL视为目录(从而查找索引文件),而不考虑尾部斜杠的存在 编辑 Nginx.conf:Nginx是';我不喜欢重写,nginx,rewrite,Nginx,Rewrite,我有一个使用子目录的站点,当前仅当尾部斜杠添加到URL(“”)时才起作用。当没有尾随斜杠时,我得到“无法连接到server domain.com:8080”(8080是为Nginx设置的侦听端口) 我尝试添加建议的重写(和),但它会导致整个虚拟主机出现“无法连接”错误 有没有其他方法可以添加尾随斜杠,我可以试试?或者,是否有一种方法可以将其配置为将URL视为目录(从而查找索引文件),而不考虑尾部斜杠的存在 编辑 Nginx.conf: user www-data; worker_processe
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。不幸的是,在实践中,这并没有发生=/@肖娜,你到底有什么要求?您真的只有一个位置{}块吗?