Назад | Перейти на главную страницу

Nginx Часть URI в переменной

Я хотел бы поместить часть 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 ) { ... }
}