Как правильно указать первый аргумент RewriteRule
Главная / Форумы / Форумы сообщества / Поисковая оптимизация / Как правильно указать первый аргумент RewriteRule| Автор | Сообщение |
|---|---|
|
Крамер
Участник |
Как правильно указать первый аргумент RewriteRule
Возник вопрос правильного и оптимального использования регулярного выражения "match everything" для директивы RewriteRule. Классический вариант: ^(.*) Можно ли его упростить? |
| Благодарности отсутствуют | |
|
admin
Администратор |
Re: Как правильно указать первый аргумент RewriteRule
Прежде всего, мы здесь говорим только о правиле переадресации. Условие RewriteCond может быть разным. Как и параметры (паттерн и таргет) и флаги для RewriteRule. ^(.*) Данный вариант является классическим и правильным. Но не без нюансов. Это регулярное выражение означает “все”. Символ Технически, символ Если при этом мы должны обработать любой URL, по которому происходит обращение (например, если мы блокируем бота по User-Agent), то нет никакой необходимости в сравнении и соответствии. Так что вместо того, чтобы заставлять парсер regex бессмысленно обрабатывать данный параметр, можно использовать варианты попроще:
Резюме: если не требуется проверять соответствие (например при блокировках), вариант с RewriteRule ^ - [F,L] Если же необходимо использовать URL-путь для переадресации, тогда только так: RewriteRule ^(.*) https://www.example.com/$1 [R=301,L] Вариант RewriteRule ^(.*) https://www.example.com/ [R=301,L] Будет работать и неправильным не является. Но там, где можно сэкономить, лучше сэкономить)) |
| Благодарности отсутствуют | |
|
Merlin
Moderator |
Re: Как правильно указать первый аргумент RewriteRule
В официальной документации указывается:
Несоблюдение этого правила приводит к появлению двусмысленных и нестабильных конфигураций, которые сложно поддерживать. Если ситуация позволяет, всегда первым используй |
| Благодарности отсутствуют |