ниже перезапись работает нормально:
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
блок. Это упростит вашу логику.
Следующий, включить перезапись журнала отладки чтобы убедиться, что полученное вами сообщение 404 исходит от исходного или переписанного URL.
Наконец, если основная причина все еще не найдена включить общий журнал отладки для Nginx:
error_log /path/to/log debug;