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

Могу ли я использовать переменные Apache с `Redirect` из mod_alias вместо использования mod_rewrite?

HTTP-сервер Apache mod_alias обеспечивает Redirect директива, которая отлично подходит для простых перенаправлений, например следующего:

# Redirect login to https
Redirect permanent /login https://www.example.org/login

Хотя многие администраторы используют mod_rewrite для перенаправления документация Apache по адресу Когда не использовать mod_rewrite предполагаю, что в целом mod_alias предпочтительнее mod_rewrite. Я бы хотел использовать mod_alias Больше.

Могу ли я использовать Redirect с участием Переменные Apache Такие как ServerName? Например, чтобы обеспечить доступность определенного контента только по HTTPS, я хотел бы сделать что-то вроде этого:

Redirect permanent /login https://%{SERVER_NAME}/login
Redirect permanent /special-project-1 https://%{SERVER_NAME}/special-project-1
Redirect permanent /special-project-2 https://%{SERVER_NAME}/special-project-2

Ни то, ни другое не работает, а буквальная строка %{SERVER_NAME} печатается в ответе:

host% curl http://www.example.org/login
...
302 Found
The document has moved <a href="https://%{SERVER_NAME}/login">here</a>.

Разрешены ли переменные Apache с mod_alias директивы? Доступны ли переменные с другим синтаксисом?

Я считаю, что здесь есть ответ на аналогичный вопрос: https://serverfault.com/a/415796/337307

@shanemadden написал:

Ты не можешь. Redirect может обрабатывать простые перенаправления, когда вы отправляете клиента на одно конкретное имя, но не имеет возможности выполнять сложные подстановки (не считая того факта, что% {HTTP_HOST} зависит от mod_rewrite).

Просто придерживайтесь mod_rewrite. mod_alias не может делать то, что вам нужно.