htaccess将root重定向到重写的子域

时间:2014-04-07 22:19:34

标签: apache .htaccess mod-rewrite redirect

我有一个棘手的htaccess问题,我似乎无法弄清楚

webapp是用/ 2 /

编写的

我们之前重写了/ card /到/ 2 /更漂亮的网址

现在我们正在重写/ ss-card /到/ 2 /以获得更明确定义的URL

然而/ 2 /仍然可以访问,我们希望/ 2 /重定向到/ ss-card /并且我所做的尝试已经在重定向循环中结束

我的问题是,这甚至可能吗?

这是我的代码

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]

1 个答案:

答案 0 :(得分:1)

尝试检查/2/变量中的%{THE_REQUEST}

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]