Veshraj Joshi
Veshraj Joshi

Reputation: 3589

Getting 500 internal error on redirect rule of alias in nginx

I am newbie to nginx server. I am getting stuck in URL redirection. I have following lines to default file.

server {
    listen 80;
    root /home/ubuntu/web/server/current/public;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;

    error_log /home/ubuntu/web/error.log info;


   location / {
    # try_files $uri $uri/ /index.php?$query_string;
    # try_files $uri $uri/ =404;
   }

   rewrite ^/web/(.*) /web/;
     location /web/ {
     alias /home/ubuntu/web/client/web/;
     # try_files $uri $uri/ index.html;
   }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location ~ /\.ht {
            deny all;
    }
}

what I expect from above rewrite rule is - all URLs like - http://example.com/web/login, http://exmpale.com/web/dashboard will be redirected to /home/ubuntu/web/client/web/ and the default page to hit is index.html file.

When I open the error log file then i found error like -

rewrite or internal redirection cycle while internally redirecting to "/web/index.php", client: ip_address, server: _, request: "GET /web/ HTTP/1.1", host: "ipaddress"

What i am doing wrong here.

Upvotes: 1

Views: 2214

Answers (1)

Veshraj Joshi
Veshraj Joshi

Reputation: 3589

Answer credit goes to @RichardSmith, he provided possible error which is in right direction. I figure out my mistake in nginx rewriting rule.

rewrite ^/web/(.*) /web/;
location /web/ {
    alias /home/ubuntu/web/client/web/;
    # try_files $uri $uri/ index.html;
} 

Instead of above I should have following-

rewrite ^/web/(.*) web/;
location web/ {
    alias /home/ubuntu/web/client/web/;
    # try_files $uri $uri/ index.html;
} 

Server consider path as absolute whenever / placed before web. Thus rewrite statement tries to redirect to fallback file which is not existed in absolute path. Eventually, rewrite statement makes never ending loop.

Upvotes: 1

Related Questions