例如,
我的网站是mywebsite.com
。 Public_html是主目录,public_html
内有文件夹sub_dir
和文件index.php
。 sub_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
的内容。
我该怎么做?
答案 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)
有一些方法可以做到这一点。
include()
在文件public_html / index.php
中<?php include_once 'sub_dir/index.php';?>
file_get_content()
在文件public_html / index.php
中<?php echo file_get_content('sub_dir/index.php');// Show as text?>