Переписать правила Изменить часть или целый URL. Это сделано по двум причинам. Во-первых, чтобы сообщить клиентам о перемещении ресурсов и во-вторых, контролировать поток в Nginx. Два метода общего назначения, используемые широко для перезаписи URL-адреса, являются вернуть Директива и переписать Директива. Из них директива перезаписи более мощная. Давайте обсудим, почему это так, а также как переписать URL.
Иметь лучше Понимание Nginx Убедитесь проще следовать в этом блоге.
Вернуть директива
Вернуть Это самый простой способ переписать URL-адрес, объявленный на сервере или локальной машине.
Вернуть на сервере:
Предположим, что ваш сайт мигрируется на новый домен, и все существующие URL должны быть перенаправлены здесь; Запустите следующий код, чтобы направить любой новый запрос на ваш сайт.
Это направляет все запросы, которые ударили www. . предыдущийДом . COM к www. . ustrectdomain Отказ компенсация www. . предыдущий . COM Отправит ошибку «301», как только приведен вышеуказанный код, и создается новый запрос доступа. Две переменные, Схема $ и $ request_uri, Получите данные из входного URL. « Слушай 80 ‘ Указывает, что блок применяется как к запросам HTTP, так и для HTTPS.
Вернуть в местном
Если вы хотите перенаправить страницы на месте полного домена, вы можете использовать вернуть Директива под блоком местоположения.
Знание Как создать nginx Rewrite Правила могут сэкономить много ваших усилий и времени.
Переписать Директива
Так же, как вернуть Директива, Директива перезаписи также может действовать как на сервере, так и в локальном. По сравнению с вернуть Директива, переписать Директива может обрабатывать сложные замены URL. Ниже приведен синтаксис переписать :
Regex является регулярным выражением, которое соответствует против входящего УРИ.
Замена_url это строка, используемая для изменения запрошенного URI.
Значение Флаг решает, необходим ли еще одно перенаправление или обработка.
Статическая страница переписать
Предположим, вы хотите перенаправить страницу HTTPS. :// пример . COM/Учебник к HTTPS. :// пример . com/new_page. . Директива будет:
Линия Расположение =/Учебное пособие Определяет, что любая идентификация учебника должна быть заменена. переписать Команда говорит заменить фразу в нотацию ^ и $ с ‘ new_page.html ‘ а затем сломайте команду. Обозначение ‘? называется не жадным модификатором, после чего поиск шаблона остановлен.
Динамическая страница переписать
Подумайте о переписывании URL HTTPS. :// www. . образец . com/user.php? ID = 11 к HTTPS. :// www. . образец . COM/USER/11 . Здесь то должен быть заменен. Используя метод статического перезаписи, потребует бы написать команду Rewrite 10 раз. Вместо этого давайте сделаем это за один ход.
Линия Расположение =/user.php. Запрашивает Nginx проверить на наличие префикса/пользователя. Как сказано ранее, Nginx будет искать фразы между начальными и конечными обозначениями как ^ и $ вместе с не жадным? Модификатор. Фраза в нашем примере является ряд пользователей. Он упоминается внутри квадратных кронштейнов как [0-9] +. Задняя ссылка в этом выражении отмечается в скобках и упоминается символом $ 1. Итак, для нашего примера перезапись произойдет для всех пользователей автоматически.
Один специальный случай под динамическим ссылкой — это несколько обратных ссылок.
Теперь мы обсудили, как писать правила перезаписи для простых и сложных URL-адресов.
Понять подробную работу правил переписания через некоторые Примеры Обработка различных сценариев.
Сравнение директива
Давайте проанализируем оба директива, сравнивая их и узнаем, почему производное перезаписи более мощно.
Директива возврата
- Это просто в использовании и понимать.
- Его можно использовать как на контекстах сервера, так и на местоположении.
- Он явно упоминает исправленный или обновленный URL, чтобы клиент мог использовать их в будущем.
- Обратные директивы могут также включать несколько ошибок кодов.
- Для кодов 301, 302, 303 и 307 параметры URL определяют URL-адрес перенаправления.
возврат (301 | 302 | 303 | 307) URL;
- Для других кодов текст должен быть явно упомянут пользователем.
Возврат (1xx | 2xx | 4xx | 5xx) [«текст»];
Например: Возврат 401 «Доступ запрещен, потому что токен истек или недействителен»;
- Эта директива может использоваться в сценариях, когда возвратный URL правильный для блока сервера, так и для блока местоположения, и переписанный URL-адрес построен с переменными Nginx.
Переписать Директива
- Он может вместить более сложные модификации URL-модификации, когда требуется захватывающие элементы без переменных Nginx или обновления в элементах на пути.
- Его можно использовать как на контекстах сервера, так и на местоположении.
- Директива перезаписи может вернуться только кода 301 или 302. Чтобы приспособиться к другим кодам, явно добавьте директиву возврата после переписывающей директивы.
- Это может не отправлять детали перенаправления клиенту.
- Обработка запроса NGINX не остановлена.
Вывод
вернуть и переписать Директивы могут использоваться для перенаправления URL-адресов как в сервере, так и на определенных условиях. Хотя Директива возвращения намного проще, Директива перезаписи широко используется, поскольку она также может обрабатывать сложные модификации/обновления URL-адресов.
Оригинал: «https://dev.to/devgraph/rewrite-rules-in-nginx-1d6e»