Edit:
Я только что видел ваш комментарий о делать это только с помощью 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
.
Я вижу несколько способов сделать это ...
Вы можете использовать header()
функцию PHP, но это не будет действительно идеальным.
Вы также можете использовать .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
...
Включите 'sub_dir/index.php'; ** или ** использовать mod_rewrite/.htaccess для создания правила пересылки под капотом –
Укажите ваш корневой каталог apache в subdir? – user2486495
возможно 'include ('../ sub_dir/index.php')'? (если вы находитесь в public_html/index.php). WAIT. Откуда вы получаете контент? Предполагаю, что вы выбрали public_html в качестве корневого каталога. – briosheje