Правило перезаписи Nginx для вложенного местоположения

#nginx #server #url-rewriting #nginx-location

#nginx #сервер #url-перезапись #nginx-местоположение

Вопрос:

У меня есть настройка файла конфигурации моего домена для Nginx. Я установил домен как www.example.com и у меня есть весь подкаталог также внутри этого, например basefolder/index.html , basefolder/abc1/signup/index.html , basefolder/abc2/signup/index.html , basefolder/signup/index.html и т.д., поскольку число n может существовать.

Я могу напрямую вызывать их через domain/dir/, который вызовет index.html файл, доступный в этом каталоге. У меня есть определенная строка запроса, установленная только для папок «регистрация», например «www.example.com/signup/?query=a12seddf » или «www.example.com/abc1/signup/?query=a12seddf «. Я хочу скрыть их по пути, например «www.example.com/signup/a12seddf » или «www.example.com/abc1/signup/a12seddf «. Я пробовал использовать правило перезаписи, но оно работает, только если я указываю все местоположение до регистрации, но я хочу написать единое правило, которое будет работать для всех папок регистрации, вместо того, чтобы писать правило перезаписи для всех.

Я попробовал приведенный ниже код, но он не сработает для меня и выдает 404 при доступе к URL-адресу beautify.

 location ~* signup/ {
    rewrite ^/signup/([a-z0-9A-Z] )/?$ /signup/?query=$1 break;   
}
  

Пожалуйста, найдите весь приведенный ниже пример рабочего конфигурационного файла с именами example.com.conf в папке с поддержкой nginx/sites:

 server {
        listen 80;
        server_name example.com www.example.com;
        root /var/www/html/sites/example.com;

        error_page 404 /error_404.html;
        location = /error_404.html {
                root /var/www/html;
                internal;
        }
        location ~* .(?:ico|css|js|gif|jpe?g|png)$ {
            expires 30d;
            add_header Pragma public;
            add_header Cache-Control "public";
        }
    rewrite ^/abc1/signup/(.*)$ /abc1/signup/index.html?_l=$1 last;
    rewrite ^/signup/(.*)$ /signup/index.html?_l=$1 last;
}
  

Спасибо.

Комментарии:

1. Вы должны показать больше своей конфигурации, чтобы мы могли понять, как она должна работать. И пример решения, которое работало только для одной папки.

2. @RichardSmith Я приложил образец демонстрации рабочего файла в моем обновленном вопросе. Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи по этому поводу. Спасибо.