Ganesh
Ganesh

Reputation: 1140

Redirect the old url to newly url

I am facing a problem in redirecting from old url structure to new url structure

This is the old URL: https://example.com/user?username=ganesh

And this is the new URL: https://example.com/user/ganesh

Actually I rewrite the old URL to a new URL successfully with the help of the below htaccess code, so rewriting of URL is working fine.

RewriteRule ^/?user/(.*?)/?$ /user.php?username=$1 [L]

But now I want to redirect all the old structured URLs to a new URL. So, I tried the below code to redirect it but after applying this below code I am unable to access the page with this URL https://example.com/user?username=ganesh and I am able to access the new URL https://example.com/user/ganesh

RewriteCond %{QUERY_STRING} ^username=(.*?)/?$ [NC]
RewriteRule ^/user$ /user/%1? [R=302,L,NC]

Trying to do this since last 2 days but no luck, Any help will be appreciated.

Upvotes: 1

Views: 47

Answers (2)

Ganesh
Ganesh

Reputation: 1140

@anubava code works perfectly although my condition was a little different.

Previously I was trying

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

Options -MultiViews
RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+user\?username=([\w-]+)\s [NC]
RewriteRule ^ /user/%1? [R=301,L]

RewriteRule ^/?user/([\w-]+)/?$ user.php?username=$1 [L,QSA]

and Finally, after months I changed it like below and it worked perfectly

Options -MultiViews
RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+user\?username=([\w-]+)\s [NC]
RewriteRule ^ /user/%1? [R=301,L]

RewriteRule ^/?user/([\w-]+)/?$ user.php?username=$1 [L,QSA]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

I don't have much experience with .htaccess but I am writing here, I hope it may help someone.

Upvotes: 0

anubhava
anubhava

Reputation: 784898

You may use these rules in your site root .htaccess:

Options -MultiViews
RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+user\.php\?username=([\w-]+)\s [NC]
RewriteRule ^ /user/%1? [R=301,L]

RewriteRule ^/?user/([\w-]+)/?$ user.php?username=$1 [L,QSA]

Upvotes: 1

Related Questions