Nginx простой редирект товаров из старой в новую категорию


9

Я делаю перенаправления продуктов со старой категории на новую.

Мне удалось заставить его работать по следующему правилу:

rewrite ^/old-category/(.*) /new-category/$1;

Но я хочу знать, когда мне следует использовать знак «конец строки» и какова разница с этим или без него в моем случае. Например:

rewrite ^/old-category/(.*)$ /new-category/$1;

Также я хочу перенаправить пользователей, если они просто пишут старое имя категории (без продуктов), должен ли я создать новое правило только для перенаправления категории или я могу отредактировать текущее правило выше для работы в обоих случаях.

Спасибо за ваши ответы заранее.

Ответы:


9

Отвечаю на ваши вопросы по порядку ...

Эта

rewrite ^/old-category/(.*) /new-category/$1;

и это

rewrite ^/old-category/(.*)$ /new-category/$1;

как написано , эквивалентны. .*Правило соответствует 0 или более «все», так что $избыточно / на самом деле не нужно.

$Терминатор полезно , когда вы хотите , чтобы соответствовать строкам , которые заканчиваются в определенном образе , например ,

rewrite ^/old-category/(.*)\.php$ /new-category/$1;

переписывать только файлы PHP .

Что касается вашего второго вопроса, если я правильно понял, вы хотите перенаправить это

http://example.com/old-category/

к этому

http://example.com/new-category/

Если это так, это уже сделано по rewriteправилу, так как .*соответствует нулю или более символов.


3
Хороший вопрос, хороший ответ. Так много людей устанавливают $ по умолчанию (или оставляют его по умолчанию), не задумываясь о том, что это на самом деле означает. Каждый раз, когда я вижу (. *) $, Я съеживаюсь. Я не пробовал, но, возможно, на самом деле пропуск $ в этом случае может иметь чуть лучшую производительность, поскольку это еще одно правило, которое нужно проверить регулярным выражением. Было бы интересно получить ответ на этот вопрос: D
Broco
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.