PHP包含另一个目录的内容

时间:2013-12-06 09:27:03

标签: php

例如,

我的网站是mywebsite.com。 Public_html是主目录,public_html内有文件夹sub_dir和文件index.phpsub_dir包含以下文件:

index.php,profile.php,contact.php

现在我希望public_html目录像sub_dir目录一样运行。就像我访问public_html/index.php一样,它会在不重定向的情况下显示public_html/sub_dir/index.php的内容。如果我访问public_html/profile.php,则会显示public_html/sub_dir/profile.php的内容。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

编辑:

我刚刚看到你的评论只是通过PHP来做,因为你无法改变document_root虽然我仍然认为使用.htaccess会是一个更好的解决方案,你当然可以只使用PHP,这是一个快速的模型:

// Grab the URL parts
$url = parse_url("http://stackoverflow.com/posts/20420420");

// Redirect the user to the same path in `sub_dir`
header('Location: '. $url['scheme'] .'://'. $url['host'] .'/'. 'sub_dir'. $url['path']);

这会将用户重定向到http://stackoverflow.com/sub_dir/posts/20420420

其他人建议使用include(),您可以将其与上面的parse_url()示例结合使用,动态调用include()sub_dir加载文件。


我看到了几种方法......

你可以使用PHP的header()函数,但这不太理想。

你也可以使用.htaccess,例如:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^sub_dir
    RewriteRule ^(.*)$ sub_dir/$1 [L]
</IfModule>

如果您将其放入public_html请求,则会将其传递给sub_dir。因此,如果您请求example.com/test.php,您实际上将加载example.com/sub_dir/test.php

您的托管设置是什么样的?根据您的环境,您还可以更改您的网络服务器document_root ...

答案 1 :(得分:0)

有一些方法可以做到这一点。

  1. 使用include()
  2. 在文件public_html / index.php

    <?php include_once 'sub_dir/index.php';?>
    
    1. 使用file_get_content()
    2. 在文件public_html / index.php

      <?php echo file_get_content('sub_dir/index.php');// Show as text?>