# Strange if

**URL:** <https://www.ruby-forum.com/t/strange-if/188922>\
**Category:** NGINX\
**Created:** [May 20, 2010, 3:30pm UTC](https://www.ruby-forum.com/t/strange-if/188922 "2010-05-20T15:30:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![danmezzetti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bb73d2/32.png) [@danmezzetti](https://www.ruby-forum.com/u/danmezzetti)\
**Post date:** [May 20, 2010, 3:30pm UTC](https://www.ruby-forum.com/t/strange-if/188922/1 "2010-05-20T15:30:20Z")

</div>

Hi all,

i’m taking in charge a new nginx cluster with a very strange  
configurations.

I’m trying rewriting the configuration and i’m unable to find a way to  
better write this if condition:

if ($request\_uri !~\*  
(^/$|^/ajax.php?type=counter&op=blog&blog(\_id|)=._$._$|^/?nl\_id=[0-9]+|?from=[0-9]+|?confirmkey=._$|^/post/([0-9]+)(?[0-9]+|)(/._|#._|?confirmkey=._|)$|/post/comment/(saved|close)/([0-9]+)(/[0-9]+|)(?blog=._|)$|/permalink/([0-9]+).html(#._)$|/archive/[0-9][0-9][0-9][0-9]-[0-9][0-9]$|/tag(._|)$|/member/[0-9]+$|/(media|album)(|/[0-9]+?from=[0-9]+|/[0-9]+)$|/user(._|)$|/blog|/sitemap(.xml|)|/images/smiley/rhymbox-(._)/(._).(gif|jpg|png)$|^/[0-9]+$|?timer=1|check\_login?destination=.\*|?nocache=1))  
{  
error\_page 404 /splinder\_404.html;  
return 404;  
}

Can it be translated on a location (note the negative !~\*).

Thanks in advance

Daniele

---

<div class="post-metadata">

**Author:** ![danmezzetti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bb73d2/32.png) [@danmezzetti](https://www.ruby-forum.com/u/danmezzetti)\
**Post date:** [May 20, 2010, 3:36pm UTC](https://www.ruby-forum.com/t/strange-if/188922/2 "2010-05-20T15:36:46Z")

</div>

2010/5/20 Daniele M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ```
> error_page 404 /splinder_404.html;
> return 404;
> 
> ```
> 
> }

first, why don’t you split your regex ?

---

<div class="post-metadata">

**Author:** ![danmezzetti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bb73d2/32.png) [@danmezzetti](https://www.ruby-forum.com/u/danmezzetti)\
**Post date:** [May 20, 2010, 4:04pm UTC](https://www.ruby-forum.com/t/strange-if/188922/3 "2010-05-20T16:04:17Z")

</div>

On Thu, May 20, 2010 at 03:29:09PM +0200, Daniele M. wrote:

> error\_page 404 /splinder\_404.html;  
> return 404;  
> }
> 
> Can it be translated on a location (note the negative !~\*).

It’s really hard to understand it.  
Try to start from this:

```
 location = / {
     ...
 }

 location = /ajax.php {
     ...
 }

 location ~ ^/post/([0-9]+)$ {
     ...
 }

 # etc

 # fallback
 location ~ / {
     alias /path/to/splinder_404.html;
 }

```

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![danmezzetti](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/bb73d2/32.png) [@danmezzetti](https://www.ruby-forum.com/u/danmezzetti)\
**Post date:** [May 20, 2010, 6:34pm UTC](https://www.ruby-forum.com/t/strange-if/188922/4 "2010-05-20T18:34:10Z")

</div>

Push that complexity into the app level. Don’t let the webserver  
config get overly complex 🙂
