Хобрук: Ваш путь к мастерству в программировании

Перенаправление nginx: /*/ в /*.html (добавьте .html к URL-адресу)

я хотел бы добавить ".html" к каждому документу, оканчивающемуся на "/", кроме домашней страницы.

Я пробовал несколько разных способов, используя перезапись и возврат 301 с nginx, но у меня не получилось. прикрепил последнюю версию, которую я сделал, которая делает /*/.html, но второй / не должно быть там.

location / {
    try_files $uri $uri/ =404;
    return 301 $scheme://$host$request_uri.html;
}

Решение, которое я ищу:

корень: domain.com должен быть доставлен как www.domain.com

файлы должны быть перенаправлены (301) на версию *.html

  • domain.com/abc/ на domain.com/abc.html
  • domain.com/dir1/abc/ в domain.com/dir1/abc.html

Ответы:


1

Вам нужно будет использовать регулярное выражение, чтобы захватить часть URI перед конечным /, чтобы исключить его. Одним из решений было бы использование именованного местоположения с оператором try_files.

Например:

location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^(.+)/$ $1.html permanent;
}

Дополнительные сведения см. в этом документе.

31.12.2017
  • Хотел задать аналогичный вопрос, но наткнулся на этот. Если кто-то ищет переписывающие ссылки, у которых нет части .html в конце URL-адреса, вы можете использовать это, просто удалите / из перезаписи. примерно так: rewrite ^(.+)$ $1.html permanent; Таким образом, если кто-то попытается перейти на example.com/contact, он попадет на example.com/html вместо 404. 30.01.2018
  • @ZN13 добавление .html может быть обработано try_files напрямую, например: try_files $uri $uri.html $uri/ =404;. Подробности смотрите по ссылке в моем ответе. 30.01.2018
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..