Hello everyone,
I’m trying to setup some basic rewrite rules in nginx (I’m sorry if I
may be
asking obvious question but I moved my servers from apache to nginx and
I
can’t figure out how to write simple rewrite rules in nginx).
This is what I am trying to achieve:
I have a URL with the following arguments:
http://www.domain.com/browse/category
What I want to achieve is:
I’ve added 2 rewriterule at first but somehow only the first rule works,
the
second won’t work:
rewrite ^/browse/(.*) http://www.domain.com/$1 permanent;
rewrite ^/(category1|category2|category3|category4)$
/browse/$1
last;
Thanks (and sorry for asking a somewhat newbie question!)
p.s: yes, I’ve read this Module ngx_http_rewrite_module
On Sun, May 22, 2011 at 03:41:59AM +0300, Adam Benayoun wrote:
rewrite ^/(category1|category2|category3|category4)$ /browse/$1
last;
Thanks (and sorry for asking a somewhat newbie question!)
p.s: yes, I’ve read this Module ngx_http_rewrite_module
You should not read anyting about rewrite module. It’s better to forget
about it. You should think using locations.
location /category1/
#depending on processing method:
# FastCGI
fastcgi_pass backend;
fatscgi_param SCRIPT_FILENMAE /path/to/browse;
# proxying
proxy_pass http://backend/browse/
# static files
root /path/to/browse;
}
location /browse/ {
rewrite ^/browse/(.*) /$1 permanent;
}
–
Igor S.
Igor,
Thanks for the pointer however there is one last thing I’m not sure how
to
do.
Basically my application is built on top of a framework meaning that
everything should go through index.php and then the routers configured
appropriately should serve you different templates and controllers based
on
the REQUEST_URI.
Basically when I try to access http://www.domain.com/category - it
should
pass to index.php the request_uri /browse/category and then serve the
appropriate output.
This is how my config look like, let me know if that make sense and what
should I add to mimic that request_uri through index.php
Cheers,
server {
listen *:80;
server_name www.domain.com;
access_log /var/www/domain/logs/access_log main;
error_log /var/www/domain/logs/error_log debug;
root /var/www/domain/html/http;
index index.php;
if ($http_host !~ "^www\.domain\.com$") {
rewrite ^(.*) http://www.domain.com$1 permanent;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location /browse {
#rewrite ^/browse/(.*) http://www.domain.com/$1
permanent;
}
location /min {
try_files $uri $uri/ /min/index.php?q=;
}
location /blog {
try_files $uri $uri/ /blog/index.php?q=$1;
}
location /apc {
try_files $uri $uri/ /apc.php$args;
}
location ~ \.php {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_pass 127.0.0.1:9000;
}
location ~* ^.+\.(ht|svn)$ {
deny all;
}
# Static files location
location ~*
^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
{
expires max;
}
}