Я пытаюсь сделать то, что, как мне казалось, будет довольно простым: а именно перенаправить domain.com/dashboard/
в другое (отличное) приложение, отличное от моего основного домена (это установка Wordpress, но я думаю, что это не имеет значения).
Так что при посещении domain.com/dashboard/anywhere
, это второе приложение должно действовать так, как если бы /dashboard/
был маршрутом домена и обрабатывать все URL-адреса и т. д. как обычно.
То, что я пробовал до сих пор, либо просто вызывает цикл перенаправления, либо вообще не маршрутизирует, либо дает ошибку 500.
Вот пример моего местоположения nginx для этого:
location ~ ^/dashboard/
{
alias /srv/www/htdocs/fork/; // this is the second application I want to access
rewrite "^(/.*)$" http://domain.com/$1 permanent;
index index.php index.html;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
break;
}
Я пробовал переключиться с alias
к root
тоже, но безрезультатно. И я не совсем уверен, что попробовать дальше.
Кто-нибудь знает, что может вызвать перенаправление? (По сути, вызывая петлю domain.com/dashboard/dashboard/dashboard
(и т.д).
Обновить
Итак, следуя совету Марка, приведенному ниже, я переместил блок местоположения над всеми правилами wordpress и закомментировал некоторый код. Был достигнут прогресс в том, что теперь просьба domain.com/dashboard/
получит доступ к нужному приложению, но теперь ищет в этом приложении dashboard
папка.
Вот текущий код:
location ~ ^/dashboard(/)(.*)$
{
root /srv/www/htdocs/fork/;
break;
}
и текущая ошибка в журналах "/srv/www/htdocs/fork/dashboard/index.php" is not found
(то, что мне нужно, это доступ /srv/www/htdocs/fork/index.php
.
Пытаться псевдоним вместо:
location /dashboard {
# you don't need regexps here, naming location will use hash lookup which is much faster
alias /srv/www/htdocs/fork/;
}
В первый раз, когда /dashboard/foo
попадает, обработка сводится к rewrite
строка, где он останавливает обработку и перенаправляет обратно на /dashboard
в том же домене, создавая цикл.
Возможно, уместно, что ваше другое приложение является установкой Wordpress, потому что Wordpress включает в себя собственные директивы перезаписи, которые в основном говорят, что если какой-либо URL-адрес не отображается на физический файл или каталог, то передайте его в Wordpress. Поэтому важно, чтобы этот фрагмент конфигурации появился перед правилами перезаписи Wordpress.
Если я правильно понимаю ситуацию и оба приложения находятся в одном домене, вам не нужен rewrite
директива здесь. В alias
директивы должно быть достаточно, чтобы служить /dashboard
адрес из другого места.