nginx多根配置问题

nginx多根配置问题,nginx,url-rewriting,config,centos7,Nginx,Url Rewriting,Config,Centos7,我有以下针对多个根目录的nginx配置(html/web为默认值,html/pma为附加路径): 因此,默认情况下会打开/html/web/index.php,但是website.com/pma会打开/html/pma/,其中pma是PHPMyAdmin 问题是: PHPMyAdmin身份验证表单重定向到index.php。因此,当我编写凭据时,它会将我重定向到/html/web/index.php!但是应该/html/pma/index.php。甚至从PHPMyAdmin注销也会重定向到/ht

我有以下针对多个根目录的nginx配置(
html/web
为默认值,
html/pma
为附加路径):

因此,默认情况下会打开
/html/web/index.php
,但是
website.com/pma
会打开
/html/pma/
,其中
pma
PHPMyAdmin

问题是:

PHPMyAdmin身份验证表单重定向到
index.php
。因此,当我编写凭据时,它会将我重定向到
/html/web/index.php
!但是应该
/html/pma/index.php
。甚至从PHPMyAdmin注销也会重定向到
/html/web/index.php


有谁能建议一种更好的配置方式吗

我可以在您的配置中看到两个错误

您的
try_files
语句应该以
/index.php
=404
结尾,而不是两者都结束!有关详细信息,请参阅

嵌套的
location~\.php$
块将永远不会被查询。外部
位置~\.php$
块优先。您可以通过使用周围前缀
位置
上的
^ ~
修饰符来解决此问题。有关详细信息,请参阅。例如:

location ^~ /pma {
    ...
    location ~ \.php$ {
        ...
    }
}
location ~ \.php$ {
    ...
}

我可以在您的配置中看到两个错误

您的
try_files
语句应该以
/index.php
=404
结尾,而不是两者都结束!有关详细信息,请参阅

嵌套的
location~\.php$
块将永远不会被查询。外部
位置~\.php$
块优先。您可以通过使用周围前缀
位置
上的
^ ~
修饰符来解决此问题。有关详细信息,请参阅。例如:

location ^~ /pma {
    ...
    location ~ \.php$ {
        ...
    }
}
location ~ \.php$ {
    ...
}


谢谢,我会核对你的答案。您建议如何编写try_文件?假设路径
/index.php
始终存在,则第一个
try_文件
语句中的
=404
是多余的,请使用:
try_文件$uri/index.php?$args
。我不相信
$uri/
这个词有任何帮助,因为它会违反您的重写规则,它的目的是在目录存在时添加一个尾随
/
。您的意思是我应该删除它吗?使用:
try_files$uri/index.php?$args未更改任何内容。我编辑了问题,删除了可能会影响某些事情的重写。谢谢,我会检查你的答案。您建议如何编写try_文件?假设路径
/index.php
始终存在,则第一个
try_文件
语句中的
=404
是多余的,请使用:
try_文件$uri/index.php?$args
。我不相信
$uri/
这个词有任何帮助,因为它会违反您的重写规则,它的目的是在目录存在时添加一个尾随
/
。您的意思是我应该删除它吗?使用:
try_files$uri/index.php?$args未更改任何内容。我编辑了问题,删除了可能会影响某些内容的重写。我不使用PMA,但您是否已将
PmaAbsoluteUri
设置为指向
/PMA/
?请参阅。将
索引
移至
位置
s之外@戴杜什卡没有帮忙。编入question@RichardSmith不,我没有。它选择了嵌套的php
location
,其中未定义
root
,因此您似乎必须在嵌套的
location
内重复
root
。我不使用PMA,但您已将
PmaAbsoluteUri
设置为指向
/PMA//code>?请参阅。将
索引
移至
位置
s之外@戴杜什卡没有帮忙。编入question@RichardSmith不,我没有。它选择了嵌套的php
location
,其中未定义
root
,因此您似乎必须在嵌套的
location
中重复该
root