Hi,
Is it possible to express the following Apache rewrite rule in Nginx?
RewriteCond %{QUERY_STRING} !^nobranding$
RewriteCond %{REQUEST_FILENAME} ^/assets/XL/([^.]+)\.([jpegif]+)$
RewriteCond /usr/local/www/assets-nz/XL/%1.branded.%2 -f
RewriteRule ^/([^.]+)\.([jpeg]+)$ /$1.branded.$2
In Nginx, this would be in a location block with an alias, so
location /assets {
alias /usr/local/www/assets-nz/;
... rewrites go here ...
}
But, I understand you can’t rewrite with an alias present? So how can
I implement the above Apache rewrite?
Cheers
Phil Murray
On Wed, Sep 26, 2007 at 04:18:43PM +1200, Philip Murray wrote:
alias /usr/local/www/assets-nz/;
... rewrites go here ...
}
But, I understand you can’t rewrite with an alias present? So how can
I implement the above Apache rewrite?
Try
location /assets {
if ($args = nobranding) {
rewrite ^(.+)$ /nobranding$1 last;
}
rewrite ^/assets/XL/(.+)\.(jpeg|jpg|gif) /XL/$1.branded.$2;
root /usr/local/www/assets-nz;
error_page 404 = /nobranding/assets$uri;
}
location /nobranding/assets {
internal;
alias /usr/local/www/assets-nz/;
}
On 26/09/2007, at 11:14 PM, Igor S. wrote:
location /nobranding/assets {
internal;
alias /usr/local/www/assets-nz/;
}
Thanks Igor, that works… but to throw a spanner into the works, I
have at the end of this configuration:
location / {
root /path/to/rails/public/
… lots of rewrites for fixing up old URLs
if (!-f $request_filename) {
proxy_pass http://mongrel;
break;
}
}
And the !-f/proxy_pass seems to pick up the request in the case where
blah.branded.jpeg doesn’t exist (and should just serve blah.jpeg
instead), and thus passing it through to mongrel.
Is there a way to force the /nobranding/assets location to be used.
Do rewrites alter $uri ?
Cheers
Phil