【问题标题】:Use subdirectory as "second" root使用子目录作为“第二个”根
【发布时间】:2014-03-13 23:05:36
【问题描述】:

对于我公司的一个项目,我被分配为我们的产品创建一个前端网站。此时它位于自己的子目录/front 下,但我希望可以从根目录访问这些文件,而不会破坏任何默认行为。

示例文件结构:

/foo
...file.php
/bar
...index.php
...login.php
/front
.../css
.../js
...index.html
...page.html

我希望能够访问/front 下的文件,就好像它们甚至不在子目录下一样。所以当我去http://website.com/ 时,我会看到/front/index.html。我通过将其添加到 .htaccess 文件来完成此操作:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ front/$1 [L]
    RewriteRule ^(.*) front/$1 [L]
</IfModule>

问题是现在我似乎无法访问/foo/bar

如果能得到任何帮助,我将不胜感激!

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    你可以这样:

    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^((?!front).*)$ front/$1 [L]
    </IfModule>
    

    【讨论】:

    • 似乎它没有从 /front 获取文件。例如,如果我转到 / 它不会显示 /front/index.html。我在这里错过了什么吗?
    • 这行得通,但是我必须在我的每个目录中输入该重写规则(有很多)。有没有办法做到这一点而不必指定例外?非常感谢您的帮助!
    • 我撒谎了——它实际上无法识别没有 .htaccess 文件的子目录。知道如何解决吗?不幸的是,我无法将 .htaccess 文件添加到其他目录。
    • 您的意思是对/foo/file.php 的请求转到/front/file/foo.php
    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多