NGINX: remove part of url permanantly
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;
Related videos on Youtube
Pulkit Sharma
Updated on September 15, 2022Comments
-
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
withclassifieds
-
Pulkit Sharma over 7 yearsI have edited the question. Please please solve second also. It will help many users like me.
-
Pulkit Sharma over 7 yearswhy $2 instead of $1. Richards answer also working with $1.
-
Opv over 7 yearsrewrite ^(.*)business/showDetails(.*)$ classifieds$1 permanent; This will also work.
-
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.