Я хочу оптимизировать структуру ссылок старой системы магазинов Magento. До сих пор при создании статических страниц к соответствующему пути добавлялся суффикс .html. Из-за более ранней проблемы даже существовали пути с двойными суффиксами (например, .html.html). Теперь, когда я отключил использование суффиксов и удалил все пути с двойными суффиксами из базы данных, я хочу настроить автоматическое перенаправление со старых URL-адресов на новые.
Чтобы сохранить существующие гиперссылки и записи поисковой системы, я хочу, чтобы Nginx перенаправлял все запросы страниц с суффиксом .html или .html.html на новый путь.
Запросы к:
example.org/banana.html
example.org/banana.html.html
должен быть перенаправлен на:
example.org/banana
так актуально, мое лучшее предположение:
location / {
rewrite ^(.*?)\.html(\.html)?$ $1 permanent;
try_files $uri $uri.html $uri.html.html $uri/ =404;
}
Как достичь своей цели и какие правила перезаписи мне нужно добавить в конфигурацию nginx?
Используйте только один try_files
заявление внутри location
блок. В файл термины могут быть добавлены по мере необходимости. Включите $uri
термин для соответствия тем URI, которые напрямую соответствуют статическим файлам (например, .css
и .js
). Включите $uri/
термин, если вы хотите использовать index
директива.
Например:
try_files $uri $uri.html $uri.html.html $uri/ =404;
Видеть этот документ для подробностей.
В rewrite
инструкции неверны, поскольку первый всегда будет соответствовать URI, предназначенному для второго. Кроме того, перезаписи захватывают ведущие /
в $1
переменная, поэтому, используя /$1
вы добавляете дополнительный ведущий /
.
Вы также можете объединить оба регулярных выражения в один оператор, например:
rewrite ^(.*?)\.html(\.html)?$ $1 permanent;