【问题标题】:Include folders with .htaccess包含带有 .htaccess 的文件夹
【发布时间】:2013-02-02 19:07:00
【问题描述】:

假设用户访问地址 domain.com/test.php

如果文件 test.php 不存在,是否有可能包含位于服务器其他位置的其他文件?

如果我的 webroot 位于 /home/user/www/,我会这样想:

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
INCLUDE: /VAR/OTHERDIR/test.php

编辑:/VAR/OTHERDIR/ 是本地路径

如果文件在另一个文件夹中不存在,则首先抛出 E:404。

不胜感激。

【问题讨论】:

    标签: php .htaccess include apache2 server-side-includes


    【解决方案1】:

    您可以执行以下操作:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^test.php$ /other/dir/test.php [L]
    

    如果文件 test.php 存在于您的服务器上,它将被显示。如果不存在,将重定向到 /other/dir/test.php。如果此文件不存在,将显示 404 错误。

    【讨论】:

    • /other/dir/ 是本地路径,而不是 URL。恐怕上面的例子对我不起作用。
    • 然后你可以简单地重写到另一个PHP文件,它会尝试包含本地文件,如果本地文件不存在则显示404错误。
    • 这仅适用于 PHP 文件。我不希望它适用于每个文件...我使用指向 /other/dir/ 的符号链接解决了部分问题。但是现在我不能把其他文件放进去。
    • 您可以使用include 显示PHP 文件,但对于其他文件类型您可以使用readfile()file_get_contents() 函数。
    猜你喜欢
    • 2016-06-28
    • 2018-09-04
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多