Jeffrey L. Roberts
Jeffrey L. Roberts

Reputation: 3004

htaccess redirect root to rewritten subdomain

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

Answers (1)

Jon Lin
Jon Lin

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

Related Questions