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

«Скрыть» расширения файлов .html с помощью перезаписи nginx

Я обслуживаю статический сайт через nginx, и моя цель - заменить URL-адреса, которые выглядят так:

http://foo.com/bar.html

с участием

http://foo.com/bar

Ключ не в конце косой черты. В настоящее время я делаю нечто подобное, используя псевдонимы местоположения, но это утомительно, потому что для каждого файла требуется блок местоположения, а также добавляется завершающая косая черта, поскольку nginx смотрит на псевдонимы как на каталоги:

    location / {
        root    /srv/www/foo/public_html;
        index   index.html;
    }

    location /bar1 {
        alias /srv/www/foo/public_html/;
        index bar1.html;
    }

    location /bar2 {
        alias /srv/www/foo/public_html/;
        index bar2.html;
    }

И так далее. Я прочитал документацию по переписыванию и, похоже, не могу синтезировать то, что говорится, с тем, что мне нужно. Я прихожу не из фона Apache; nginx - это мой первый набег на веб-серверы, поэтому я уверен, что упускаю что-то очевидное, поскольку мой HTTP-фон слаб. Заранее благодарим за любую помощь, которую вы можете предоставить.

try_files должно быть то, что вы хотите.

Что-то вроде этого:

try_files $uri.html $uri $uri/ =404;

Согласно комментарию @Khaja, лучший ответ:

try_files $uri.html $uri/ =404;

Таким образом, обслуживается только одна копия ресурса (без расширения .html). Вы не хотите разделять силу ссылок на несколько URL-адресов, обслуживающих дублированный контент. Найдите документацию Вот.