重写规则从路径中删除文件夹并保留其余的目录结构

时间:2012-09-28 03:52:19

标签: .htaccess url mod-rewrite directory structure

在我的基本目录中,我有很多文件夹。我想把这些文件夹放到子目录中。

domain.com/test/test.html

将具有文件结构:

domain.com/subdir/test/test.html

仍然在同一个网址:domain.com/test /

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteRule ^(.*)$ /subdir/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

从此处的另一个答案中复制,但它也会停止对基本目录的其他请求。

我需要它来检查子目录中的foldername匹配,如果它存在或者不是从基本目录提供。

1 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine on

# these conditions are optional, they're to make sure you don't clobber a legit request
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# these conditions aren't optional, they check to see if the requested file/dir exists inside /subdir
RewriteCond %{DOCUMENT_ROOT}/subdir%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/subdir%{REQUEST_URI} -d

# rewrite
RewriteRule ^(.*)$ /subdir/$1 [L]