Nginx rewrite equivalent to Apache RewriteRule tha

2019-07-08 02:23发布

I'm performing a migration from an Apache server to Nginx and missed a .htaccess file that performs a rewrite:

RewriteRule ^(.*)$ routes.php?params=$1 [NC,QSA]

For example, this endpoint example.com/api/v1/param1/param2/param3 would be rewritten as https://example.com/api/v1/routes.php?params=/param1/param2/param3

Can someone confirm that this is the correct equivalent for Nginx before I re-attempt the migration?

rewrite "(?i)^(.*)$" routes.php?params=$1

and is this how it would be used in the config file since /api/v1 is the only path that requires the rewrite?

location /api/v1 {
  rewrite "(?i)^(.*)$" routes.php?params=$1
} 

UPDATE

Adding this to the conf file in Laravel Forge appears to just break the application and prevents displaying any views. Instead, it says This site can’t be reached example.com refused to connect.

1条回答
地球回转人心会变
2楼-- · 2019-07-08 02:59

All nginx URIs begin with a leading /, and your regular expressions do not attempt to remove the /api/v1/ prefix before appending the parameter list.

Try:

location /api/v1 {
    rewrite ^/api/v1(/.*)$ /api/v1/routes.php?params=$1 last;
}
查看更多
登录 后发表回答