Путь подстановочного знака Nginx с косой чертой не работает
Я хочу создать подстановочный путь, который начинается с /blog папка, я использую следующий код
location ~* ^/blog/(.*)$ {
    try_files $uri $uri/ $uri.php @rewrites;
}
location @rewrites {
    rewrite ^/blog/$ /rewrite/bloguri.php last;
}
Работает следующая ссылка, которая показывает содержание /rewrite/bloguri.php
http://www.example.com/blog/randomlink.html
http://www.example.com/blog/randomlink
но следующие структуры не работают, что мне нужно, чтобы это работало
http://www.example.com/blog/randomlink/
http://www.example.com/blog/randomlink.php
Редактировать:
bloguri.php содержит следующее содержание
<?php
echo "blog";
?>
Ниже скриншот логов
 бревна
Ниже мой полный nginx.conf
 location ~ ^/~(.+?)(/.*?\.php)(/.*)?$ {
     alias /var/www/vhosts/example.com/web_users/$1/$2;
     fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
     include /etc/nginx/fastcgi.conf;
 }
 location ~ \.php(/.*)?$ {
     fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
     include /etc/nginx/fastcgi.conf;
 }
 location ~ /$ {
     index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
 }
 location /blog {
     try_files $uri $uri/ /rewrite/blog.php;
 }
1 ответ
Решение
                        
                        Попробуй это:
location /blog {
    index /rewrite/bloguri.php;
    try_files $uri $uri/ /rewrite/bloguri.php;
}
В вашем вопросе не указано явно, что вы хотите перенаправить все запросы к несуществующим файлам в сценарий, но я предполагаю, что это то, что вы ищете.
Этот однострочник сделает именно это и является стандартным способом реализации шаблона front-controller в nginx.