PHP: Как я могу получить глубину каталога текущего URL? - PullRequest
0 голосов
/ 29 ноября 2011

Я работаю над страницей 404 для сайта моей компании, и у нее есть переменная $depth, которая говорит "../site/". Это прекрасно работает для любых плохих URL в базовом каталоге, но все, что находится в подпапке, захватывает файлы css из неправильного места, используя переменную $depth. Я попытался $depth = '/site/', и он не захватил файлы CSS вообще. Мой вопрос, как я могу заставить PHP вычислять $depth динамически, в частности, число ../ для вставки? Если я могу получить номер или что-то, это легко, но я не могу найти быстрый и легкий способ сделать это.

Редактировать: Оказывается, файл 404.php находится только в одном месте, независимо от того, на какой каталог ссылается плохой URL. Итак, моя настоящая проблема, вероятно, вообще не связана с php. Почему страница 404 получает файл css в одной папке при достижении с www.siteurl.com/404, а файл css с тем же именем из другой папки при достижении с www.siteurl.com/foo/bar?

Ответы [ 4 ]

2 голосов
/ 29 ноября 2011

Используйте абсолютный URL-адрес файлов CSS, чтобы избежать путаницы с такими путями.

Если по какой-то причине это не работает, попробуйте посмотреть массив $_SERVER, в частности $_SERVER['PHP_SELF'] и $_SERVER['DOCUMENT_ROOT'].

1 голос
/ 29 ноября 2011

Вот функция, которую я написал несколько лет назад, я использую ее на своем сайте. Должно помочь:

<?
function absolute_include($file)
         {
         /*
         $file is the file url relative to the root of your site.
         Yourdomain.com/folder/file.inc would be passed as
         "folder/file.inc"
         */

         $folder_depth = substr_count($_SERVER["PHP_SELF"] , "/");

         if($folder_depth == false)
            $folder_depth = 1;

         include(str_repeat("../", $folder_depth - 1) . $file);
         }
?>
1 голос
/ 29 ноября 2011

Если вы просто пытаетесь использовать CSS, в своей HTML-главе вы можете просто использовать / .css

Используя / в начале, вы указываете браузеру перейти в корневой каталог вашего сайта для поиска запрошенного сайта.

Если вам нужен путь через PHP, вы можете использовать

$_SERVER['DOCUMENT_ROOT']

, который даст вам прямой путь к корневому каталогу вашего сайта, из которого вы можете создать.

0 голосов
/ 29 ноября 2011

Вы должны сопоставить известный веб-путь с известным дисковым путем (например, web / diskroot). На основании этой информации вы можете определить, куда указывает ваш текущий веб-путь.

...