在内部重写一个子目录并重定向旧的URL

时间:2015-09-24 16:41:13

标签: .htaccess mod-rewrite redirect

我的网站根文件夹位于子文件夹/ web /下,并且所有网址都包含/web/toto.php。我通过设置一个规则来改变这一点,以便所有请求都在内部指向子文件夹但是url现在更短了/toto.php。

RewriteCond %{REQUEST_URI} !^/web/(.*) 
RewriteRule ^(.*)$ /web/$1 [L]

现在,旧的地址仍然可用,我需要将/ web / *网址重定向到短版本。怎么做到这个?文件存在阻止我编写正在运行的规则。

1 个答案:

答案 0 :(得分:1)

您需要一个新的重定向规则:

RewriteEngine On

# to externally redirect /web/path to /path
RewriteCond %{THE_REQUEST} \s/+web/(\S*)\s [NC]
RewriteRule ^ /%1 [R=302,L,NE]

# to route /path to /web/path
RewriteCond %{REQUEST_URI} !^/web/ [NC]
RewriteRule ^(.*)$ /web/$1 [L]