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

Как настроить nginx для использования красивых URL-адресов для статических сайтов?

У меня есть несколько статических сайтов (в основном созданных Sphinx), которые я пытаюсь разместить на своем VPS. Я установил и настроил nginx в соответствии с инструкциями, и я могу успешно отображать свои сайты, но проблема в том, что URL-адреса являются абсолютными, и это выглядит некрасиво.

Например, типичная папка сайта может выглядеть так:

/public_html/index.html /public_html/api.html /public_html/quickstart.html

И HTTP-запросы на / изменить URL-адрес на "http: //sitename/index.html". Я в основном хочу убрать все статические префиксы из требований URL и заставить nginx направлять входящие запросы в /, / api, / quickstart в нужные места, а также заставить nginx отображать правильные красивые URL-адреса, когда пользователи посещают страницы.

Я пробовал поискать в Google, но все, что я нашел, это правила перезаписи, которые, как мне кажется, слишком сложны для того, что я пытаюсь сделать.

Любая помощь будет принята с благодарностью.

Для этого вам следует использовать try_files. Идея состоит в том, что вы создадите свои URL-адреса без .html, а Nginx незаметно добавит его. Пример конфигурации ниже.

server {
   #listen/server_name/root here.

   try_files $uri.html $uri $uri/ @notfound;

   location @notfound {
      alias /your/404/file.html
      return 404;
   } 
}

Использовать статическое местоположение:

location / {
        index index.html;
        root /var/www/nginx-default;
}

location /api {
        index api.html;
        alias /var/www/nginx-default;
}

location /quickstart {
        index quickstart.html;
        alias /var/www/nginx-default;
}

регулярное выражение:

location ~/(.*)$ {
        alias /var/www/nginx-default/$1.html;
}