使用htaccess删除子文件夹

时间:2015-07-09 12:11:09

标签: .htaccess url-rewriting

这是我网站的架构:

/
    app/
        index.php
        ...
    libs/
        lib1/
            file.php
        lib2/
        ...

我需要通过此url访问index.php:domain.com/index.php

我试过了:

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

它有效,但在我的index.php中,我打电话给例如:

include('../libs/lib1/file.php');

它不起作用,因为此路径现在引用root ...

我再也无法访问domain.com/libs了,因为它正在寻找domain.com/app/libs。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

include()不应该关心浏览器看到的路径。这应该基于服务器上的本地文件系统。但是您的规则 会影响对lib的直接访问,因此请尝试添加更多条件:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^app/
RewriteRule ^(.+)$ app/$1 [L]
RewriteRule ^$ app/index.php [L]

这使得对现有文件或内容的请求不会通过app文件夹进行路由。