Я хотел бы псевдоним m.example.com
так что запросы перенаправляются / имеют псевдоним example.com/m/
но без перенаправления пользователя на /m/
каталог.
Например, пользователь обращается к m.example.com
, m.example.com/1.htm
, m.example.com/2.htm
но nginx перенаправляет запросы на example.com/m/
, example.com/m/1.htm
и example.com/m/2.htm
.
Я пробовал использовать rewrite
директива, но это, похоже, выполняет перенаправление на стороне клиента на example.com/m/
.
Я также посмотрел на alias
директива, но это только, кажется, изменяет местоположение, где файлы будут обслуживаться в файловой системе сервера.
Я уверен, что это должно было быть сделано раньше, но я не могу с этим справиться. Я использую неправильный флаг с alias
директива (я пробовал все 4: last
, break
, redirect
, permanent
). Я вообще пропустил правильную директиву для использования?
Фрагмент конфигурации с использованием перезаписи:
server_name example.com m.example.com;
...
if ($host ~* m\.(.*))
{
rewrite ^(.*)$ http://example.com/m$1 break;
}
Еще одна попытка:
server
{
listen 80;
server_name m.example.com;
location /
{
rewrite ^ http://example.com/m$request_uri permanent;
}
}
Заранее спасибо.
В Nginx это невозможно. Вы можете использовать поддомен m, но вам нужно будет перейти на свой бэкэнд в этом блоке сервера. Это связано с тем, что Nginx не может переписать URL-адрес без использования фактического перенаправления HTTP, даже если вы скажете ему, что он проигнорирует это и вызовет перенаправление HTTP.
Если вы используете бэкэнд fastcgi, это не имеет особого значения, и даже если вы перейдете к Apache через прокси, вы все равно сможете настроить его так, чтобы это не волновало.