Pulkit Sharma
Pulkit Sharma

Reputation: 262

NGINX: remove part of url permanantly

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

Upvotes: 11

Views: 25347

Answers (2)

Opv
Opv

Reputation: 450

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;
    }
}

Upvotes: 5

Richard Smith
Richard Smith

Reputation: 49692

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;

Upvotes: 10

Related Questions