try_files_bypass

Gena Makhomed gmm на csdoc.com
Вт Авг 3 21:51:49 MSD 2010


On 03.08.2010 17:00, Igor Sysoev wrote:

> В свете такого кошмара
>
> http://kuapp.com/2010/06/30/nginx-rewrite-rules-of-wordpress-3-0-permalinks-and-wp-super-cache.html
>
> есть идея внедрить директиву try_files_bypass или bypass_try_files
> по аналогии с proxy_cache_bypass:
>
>     try_files_bypass   $query_string
>                        $cookie_comment_author
>                        ...
>                        ;
>
> Только придётся делать поддержку выржаений, для вещей типа
>                   "$request_method = POST"
>                   "$http_cookie ~* comment_author_|wordpress|wp-postpass_"
>

вместо синтаксиса

try_files_bypass   $query_string
		   "$request_method = POST"
	           ...
                    ;

предлагаю сделать безымянные переменные с вычисляемым значением:

try_files_bypass   $query_string
		   $( $request_method = POST )
	           ...
                    ;

все что внутри $( ... ) - это допустимые варианты из if ( условие ).
значение этой переменной: 1 для случая true или "" для случая false.

плюс в том, что парсер всегда сможет правильно понять $( условие )

$( $http_cookie ~* "id=([^;]+)(?:;|$)" )

что для варианта синтаксиса "условие" будет очень затруднительно:

" $http_cookie ~* "id=([^;]+)(?:;|$)" "

и в будущем возможно будет расширение синтаксиса путем введения функций:

$crc32( ... ),  $md5( ... ), $sha1( ... )

$and( ... , ... ), $or( ... , ... ), $not( ... )

например:

$and( $( $request_method = POST ), $( $server_protocol = "HTTP/1.0" ) )

-- 
Best regards,
  Gena




Подробная информация о списке рассылки nginx-ru