Назад | Перейти на главную страницу

Как я могу обойтись без псевдонима в nginx?

Из-за давняя ошибка в nginx я был посоветовал чтобы заменить директиву псевдонима директивой root. К сожалению, теперь это ломает мои статические файлы, которые находятся в другом каталоге, чем мой путь к сайту (mysite.com/blog -> /var/www/mysite/wordpress). Как я могу обойти это, не меняя свою статическую файловую структуру? Вот мой полный блок местоположения:

location /blog {
    root /var/www/mysite/wordpress;
    try_files $uri $uri/ /blog/index.php$is_args$args;

    location ~ \.php {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_split_path_info ^(?:\/blog\/)(.+\.php)(.*);
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
}

Перепишите URI:

location /blog {

    root /var/www/mysite/wordpress;
    rewrite ^/blog/([^.]+\.[^.]+)$ /$1 break;
    try_files $uri $uri/ /blog/index.php$is_args$args;

    location ~ \.php {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_split_path_info ^(?:\/blog\/)(.+\.php)(.*);
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }

}

Это удалит /blog часть URI для URI, содержащая в себе потенциальный суффикс файла (something.something).