Я пытаюсь запустить файл PHP на своем сервере по URL-адресу /~nik/t.php
(фактический файл находится по адресу /home/nik/public_html/t.php
). Вот как выглядят мои настройки PHP:
location ~ ^/~(.+?)(/.*)\.php$ {
alias /home/$1/public_html;
# What should this regex be?
fastcgi_split_path_info ^/~nik/(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
Я все время получаю 404, и когда я комментирую статью вокруг return 404;
, Я вижу ошибку:
Unable to open primary script: /home/nik/public_html/~nik/t.php (No such file or directory)
Можете ли вы увидеть, что не так с моей конфигурацией, или указать мне несколько документов о том, как это сделать? К сожалению, для настройки nginx необходимы глубокие знания регулярных выражений.
На самом деле это очень простая ошибка регулярного выражения, которую вы там сделали.
Как ваша вторая группа захвата в fastcgi_split_path_info
директива (/.*)
тогда все регулярное выражение ^/~nik/(.+?\.php)(/.*)$
не будет соответствовать /~nik/t.php
поскольку за ним не следует косая черта. Знак вопроса здесь также бесполезен, хотя он не является причиной наблюдаемого поведения.
Правильное регулярное выражение должно быть ^/~nik/(.+\.php)(.*)$