map $arg_go $new_url {
default "";
all/note-name-hi-kitty/ /2014/12/23/note-name-hi-kitty/;
all/article-name-hello-world/ /2014/01/01/article-name-hello-world/;
# тут остальные ссылки
}
server {
listen 80;
server_name example.com;
location = / {
if ($new_url) {
return 301 $new_url;
}
# тут какой-то конфиг для корня
}
# всё остальное
return 301
обязательно должен быть второй параметр — адрес. В данном случае можно было бы написать:if ($request_uri ~ "\.") {
rewrite ^/(.*)/$ /$1;
return 301 $uri;
}
proxy_set_header X-HTTPS $https;
location @remote {
rewrite (.*) /api$1 break;
proxy_pass https://someremoteserver;
...
}
Если внутри проксируемого location с помощью директивы rewrite изменяется URI, и именно с этой конфигурацией будет обрабатываться запрос (break):location /name/ { rewrite /name/([^/]+) /users?name=$1 break; proxy_pass http://127.0.0.1; }
В этом случае URI, указанный в директиве, игнорируется, и на сервер передаётся изменённый URI запроса целиком.
server {
server_name site site.com;
root /sitedir/htdocs;
index index.php;
location / {
try_files $uri $uri/ /index.php;
}
location ^~ /forum/ {
return 301 http://forum.site.com$request_uri;
}
location ~ \.php$ {
try_files $uri /index.php;
gzip on;
fastcgi_pass 127.0.0.1:9000;
.....
}
}
server {
server_name forum.site.com;
root /sitedir/htdocs;
location / {
return 301 http://site.com$request_uri;
}
location /forum/ {
rewrite ^ /index.php break;
# fastcgi directives;
.....
}
}
listen.owner = www-data
listen.group = www-data
listen.mode = 0600