Reputation: 3004
I have a tricky htaccess problem I can't seem to figure out
A webapp was written in /2/
We previously rewrote /card/ to /2/ for prettier urls
Now we are rewriting /ss-card/ to /2/ for a more clearly defined url
however /2/ is still accessible and we would like /2/ to redirect to /ss-card/ and the attempts I have made have ended in redirect loops
My question is, is this even possible?
Here is my code
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/ss-card
RewriteCond %{REQUEST_URI} !^/2
Redirect 301 /card /ss-card
Redirect 301 /card/ /ss-card/
RewriteRule ^(.*)$ /ss-card/$1 [R=302,L,NC]
RewriteRule ^ss-card/card$ /ss-card/ [R=302,L,NC]
RewriteRule ^ss-card/card/$ /ss-card/ [R=302,L,NC]
RewriteRule ^ss-card/card/(.*)$ /ss-card/$1 [R=302,L,NC]
RewriteRule ^card$ /ss-card/ [R=302,L,NC]
RewriteRule ^card/?$ /ss-card/ [R=302,L,NC]
RewriteRule ^ss-card$ /2/ [L,NC]
RewriteRule ^ss-card/?$ /2/ [L,NC]
RewriteRule ^ss-card/(.*)$ /2/$1 [L,NC]
Upvotes: 0
Views: 66
Reputation: 143966
Try checking for /2/
in the %{THE_REQUEST}
variable:
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} \ /+2/
RewriteRule ^2/(.*)$ /ss-card/$1 [L,R=301]
Redirect 301 /card /ss-card
Redirect 301 /card/ /ss-card/
RewriteCond %{REQUEST_URI} !^/ss-card
RewriteCond %{REQUEST_URI} !^/2
RewriteRule ^(.*)$ /ss-card/$1 [R=302,L,NC]
RewriteRule ^ss-card/card$ /ss-card/ [R=302,L,NC]
RewriteRule ^ss-card/card/$ /ss-card/ [R=302,L,NC]
RewriteRule ^ss-card/card/(.*)$ /ss-card/$1 [R=302,L,NC]
RewriteRule ^card$ /ss-card/ [R=302,L,NC]
RewriteRule ^card/?$ /ss-card/ [R=302,L,NC]
RewriteRule ^ss-card$ /2/ [L,NC]
RewriteRule ^ss-card/?$ /2/ [L,NC]
RewriteRule ^ss-card/(.*)$ /2/$1 [L,NC]
Upvotes: 1