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

nginx переписывает URL-адрес в нижний регистр

У меня есть установка nginx, но мне нужно исправить проблему, когда кто-то вводит "/ Home" в:

Фактическая структура каталога и файла содержит смешанные символы верхнего и нижнего регистра. Я хотел бы сохранить это для простоты, то есть / Home и / About являются фактическими каталогами, но для SEO я хочу постоянно перенаправлять в нижний регистр / home, но находить фактический / Home каталог.

Я не уверен, можно ли этого добиться с помощью правила перезаписи или есть нечувствительность к регистру для "location / {}" или какой-либо комбинации.


        location / {
                try_files $uri $uri/ /Home;
        }

Примечание: Я не ищу ответов, которые попадают в Подводные камни Nginx, включая злое если.

Как упоминалось в комментариях к вашему вопросу, это возможно с помощью модуля perl. Предполагая, что вы будете использовать это $uri_lowercase вы можете написать что-то вроде этого:

location / {
    try_files $uri $uri/ $uri_lowercase $uri_lowercase/ =404;
}

Однако обратите внимание, что $ uri_lowercase может не соответствовать вашим потребностям, если у вас есть URL-адреса со смешанным регистром, например /Home/UseR/teSt.html и вам нужно попробовать все кучу частично строчные буквы uri. Если это ваш случай, я настоятельно рекомендую получить некоторую политику в отношении ваших каталогов и потребовать, чтобы они были в нижнем регистре.