下面重写工作正常:
rewrite ^/city/restaurants$ /city/listings/restaurants permanent;
但这不起作用
rewrite ^/city/restaurants$ /city/listings/restaurants last; rewrite ^/city/restaurants$ /city/listings/restaurants break;
我究竟做错了什么?
低于整个nginx服务器块
server { listen 80 default backlog=1024; server_name mydomain.com; client_max_body_size 20M; charset utf-8; keepalive_timeout 50; access_log /var/log/access_log main; error_log /var/log/error_log info; root /var/www/; index index.php index.phtml index.html; autoindex on; location ~ \..*/*\.php$ { return 403; } location ~^/sites/.*/private/{ return 403; } location ~^/sites/.*/files/* { try_files $uri @rewrite; } location ~ (^|/)\. { return 403; } location / { rewrite ^/city/restaurants$ /city/listings/restaurants last; location ~* \.php$ { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass 127.0.0.1:9000; #try_files $uri @rewrite; } try_files $uri @rewrite; } location @rewrite { rewrite ^ /index.php; } location ~* \.(?:ico|css|js|gif|jpg|jpeg|png)$ { try_files $uri $uri/; expires 30d; } }
首先,将键重写从location块移出到封闭的server块中。 这将简化你的逻辑。
接下来, 启用重写debugging日志logging以确认您正在获取的404是来自原始URL还是重写的URL。
最后,如果找不到根本原因,请为Nginx 启用常规debugging日志logging :
error_log /path/to/log debug;