NGINX: remove part of url permanantly

18,199

Solution 1

server 
{
    listen 80; ## Listen on port 80 ##
    server_name example.com;  ## Domain Name ##
    index index.html index.php;  ## Set the index for site to use ##
    charset utf-8; ## Set the charset ##
    location ^~ /forum/showPost {
        rewrite ^/forum/showPost(.*)$ $1 permanent;
    }
    location ^~ /business/showDetails {     
        rewrite ^(.*)business/showDetails(.*)$ classifieds$1 permanent;
    }
}

Solution 2

There are a number of options. You could protect the rewrite within a location block which would be quite efficient as the regular expression is only tested if the URI prefix matches:

location ^~ /forum/showPost {
    rewrite ^/forum/showPost(.*)$ $1 permanent;
}

See this document for more.

You used permanent in your question - which generates a 301 response.

If you use redirect instead of permanent - a 302 response will be generated.

If you use last instead of permanent - an internal redirect will occur and the browser address bar will continue to show the old URL.

In response to your comment:

rewrite ^/forum/showPost(.*)$ /post$1 permanent;
Share:
18,199

Related videos on Youtube

Pulkit Sharma
Author by

Pulkit Sharma

Updated on September 15, 2022

Comments

  • Pulkit Sharma
    Pulkit Sharma over 1 year

    I have redesigned a website and changed the url formats too. Now i need to change the old url to new one.

    Here is my old url:

    http://www.example.com/forum/showPost/2556/Urgent-Respose
    

    The new url will be:

    http://www.example.com/2556/Urgent-Respose
    

    How to redirect to new url using nginx by removing /forum/showPost from url?

    Edited: Also this url:

    http://www.tikshare.com/business/showDetails/1/Pulkit-Sharma-and-Associates,-Chartered-Accountants-in-Bangalore
    

    New url:

    http://www.tikshare.com/classifieds/1/Pulkit-Sharma-and-Associates,-Chartered-Accountants-in-Bangalore
    

    Above link is complete removing whereas this link is to replace business/showDetails with classifieds

  • Pulkit Sharma
    Pulkit Sharma over 7 years
    I have edited the question. Please please solve second also. It will help many users like me.
  • Pulkit Sharma
    Pulkit Sharma over 7 years
    why $2 instead of $1. Richards answer also working with $1.
  • Opv
    Opv over 7 years
    rewrite ^(.*)business/showDetails(.*)$ classifieds$1 permanent; This will also work.
  • Richard Smith
    Richard Smith over 7 years
    @Opv your $1 will only capture the leading /. rewrite operates on a normalised URI which does not include the scheme, server name or query string.