Я хотел бы поместить часть URI в nginx в переменную. В настоящее время у меня есть это правило.
if ( !-e /tmp/access_22092012_$cookie_PHPSESSID.tmp ) {
rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last;
}
Запросы похожи на
http: //my.domain/folder1/folder2/22092012/index.html
http: //my.domain/folder1/folder2/22092012/files/x.sfw
Где 22092012 могут быть и другие номера.
Я хочу извлечь часть 22092012
из URL-адреса поместите его в переменную, что затем войдет в указанное выше условие существования файла:
if ( !-e /tmp/access_$urlpart_$cookie_PHPSESSID.tmp ) {
rewrite /folder1/folder2/(.*) /folder1/folder1.php?file=$1 last;
}
Зачем мне это нужно: я делаю защиту входа, чтобы защитить файлы с сеансовым входом. Мое приложение записывает файлы tmp, поэтому, если в папке 100 файлов, сценарию не нужно проверять для каждого файла, есть ли у него разрешение на это, и не нужно запускать для каждого файла рабочий php.
Это возможно?
Да - вы можете использовать регулярное выражение с 'захватами' в location
и ссылаться на них в location
блок, вот так:
location ~ /folder1/folder2/(.*)/ {
if ( !-e /tmp/access_$1_$cookie_PHPSESSID.tmp ) { ... }
}