Конфиг Nginx, который у меня есть, выдает 404 для .php
:
## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
return 404;
}
Однако у меня есть файл index.php в подпапке, который я хочу запустить. Текущая конфигурация выглядит так:
location = /sitename/subpage/index.php {
fastcgi_pass phpcgi; #where phpcgi is defined to serve the php files
}
location = /sitename/subpage2/index.php {
fastcgi_pass phpcgi;
}
location = /sitename/subpage3/index.php {
fastcgi_pass phpcgi;
}
это работает отлично, но проблема в дублирующих местоположениях, и если есть много подстраниц, тогда конфигурация становится огромной.
Я попробовал подстановочный знак, такой как *, и некоторое регулярное выражение, которое говорит, что тест nginx пройден, но не загружает страницу, т.е. 404. Что я пробовал:
location = /sitename/*/index.php {
fastcgi_pass phpcgi;
}
location ~* ^/sitename/[a-z]/index.php$ {
fastcgi_pass phpcgi;
}
Есть ли какой-нибудь способ, которым я могу иметь какой-либо путь в этом месте как регулярное выражение или подстановочный знак?
+
починил это.Порядок важен из описания местоположения nginx :
Это значит:
=
. (соответствие «самый длинный совпадающий префикс»)Вам необходимо настроить порядок частей регулярных выражений.
источник