.htaccess - 将多个子目录重写为root

时间:2013-09-30 20:55:52

标签: apache .htaccess mod-rewrite url-rewriting

我正在尝试将多个子目录重写到根目录。我得到的情况是,我有一个名为 blog / 的文件夹,其中包含主站点文件夹以及另一个名为 projects / 的子目录,其中包含我希望可从中访问的其他文件夹根:

www/
    blog/
        work/
        contact/
    projects/
        projectA/
        projectB/

我想要的是能够访问工作/ 联系人/ projectA / projectB / 从根目录转到 example.com/projectA example.com/projectB 。我还希望 blog / 目录在两个文件夹都存在的情况下优先使用。

目前,在我的htaccess中,我有这个,虽然它只是将所有内容重写为 blog / ,将其从URL中删除,但不会影响 projects / 文件夹。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !(.*)site
RewriteRule ^(.*)$ site/$1 

1 个答案:

答案 0 :(得分:3)

尝试:

RewriteEngine on

# first check if request is in /blog/
RewriteCond %{DOCUMENT_ROOT}/blog%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/blog%{REQUEST_URI} -d
RewriteRule ^(.*)$ /blog/$1 [L]

# then check if request is in /projects/
RewriteCond %{DOCUMENT_ROOT}/projects%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/projects%{REQUEST_URI} -d
RewriteRule ^(.*)$ /projects/$1 [L]

# otherwise, blindly rewrite to blog (or do nothing by removing this rule to allow a 404 not found)
RewriteCond ${REQUEST_URI} !^/blog/
RewriteRule ^(.*)$ /blog/$1 [L]