img src = "/" путь, который работает во всех ситуациях - PullRequest
2 голосов
/ 21 ноября 2011

Я переписываю свой сайт, меняя его с ColdFusion на PHP. Во время внесения изменений и тестирования я использую подпапку под доменным именем моего сына. Я столкнулся с проблемой, с которой я сталкивался раньше, но раньше я мог ее исправить, поставив пару .. или / перед дорожкой.

Во время тестирования я обнаружил, что некоторые из этих путей работают, а некоторые нет; это кажется немного случайным. Таким образом, это немного усложняет тестирование, и на самом деле на одной из страниц, над которыми я работаю, я не могу найти путь к работе вообще, пока не укажу полный путь. Однако это лишило бы смысла использование баз данных.

(И да, переменная PHP работает.)

Кто-нибудь знает верное исправление?

<img src="..$ArtFilePath" title="$Title" alt="$Title"> 

<img src="/$ArtFilePath" title="$Title" alt="$Title">

<img src="/PHP2012/$ArtFilePath" title="$Title" alt="$Title">

<img src="http://markdinwiddie.com/PHP2012/artwork/Drawings/Boy.jpg" title="$Title" alt="$Title">

Ответы [ 7 ]

3 голосов
/ 21 ноября 2011

Абсолютные пути URL

Абсолютные пути называются так, потому что они ссылаются на очень конкретное местоположение, включая имя домена.Абсолютный путь к веб-элементу также часто называют URL-адресом.Например, абсолютный путь к этой веб-странице: http://webdesign.about.com/library/weekly/aa040502a.htm

Как правило, абсолютный путь к домену используется для указания на веб-элементы, которые находятся в другом домене, чем ваш собственный.Например, если я хочу перейти по ссылке на сайт руководства по графическому дизайну - мне нужно включить домен в URL: http://graphicdesign.about.com/.Таким образом, ссылка на ее запись глоссария будет выглядеть следующим образом:

<a href="http://graphicdesign.about.com/library/glossaries/web/blabsoluteurl.htm"> ...</a>

Если вы имеете в виду веб-элемент, который находится в том же домене, что и вы, вам не нужно использоватьдоменное имя в пути вашей ссылки.Просто не входите в домен, но обязательно добавьте первую косую черту (/) после имени домена.

Например, в Центре ресурсов для начинающих есть URL-адрес: http://webdesign.about.com/library/beginning/bl_begin.htm Если бы я ссылался наЭтот URL с другой страницы моего сайта, я мог бы ссылаться на него следующим образом:

<a href="/library/beginning/bl_begin.htm">...</a>

На большинстве веб-сайтов рекомендуется использовать абсолютные пути без имени домена.Этот формат гарантирует, что ссылка или изображение будет использоваться независимо от того, где вы размещаете страницу.Это может показаться глупой причиной для использования более длинных ссылок, но если вы совместно используете код на нескольких страницах и в каталогах на своем сайте, использование абсолютных путей ускорит ваше обслуживание.

URL-адреса относительного пути

Относительные пути меняются в зависимости от того, на какой странице находятся ссылки.Существует несколько правил создания ссылки с использованием относительного пути:

ссылки в том же каталоге, что и на странице, не содержат информации о пути. Подкаталоги файлов перечислены без каких-либо предшествующих косых черт еженедельно / ссылки на файлы в одном каталогеуказан как

../filename

Как определить относительный путь:

Определите расположение редактируемой страницы.Эта статья находится в папке /library/weekly на моем сайте.Определите местоположение страницы или изображения, на которое вы хотите сослаться.Ресурсный центр для начинающих находится здесь: /library/beginning/ Сравните местоположения и решите, как на него указать. Из этой статьи мне нужно будет перейти на один каталог вверх (to/library), а затем вернуться обратно в начальный каталог.ссылка с использованием правил, перечисленных выше: ...

1 голос
/ 28 октября 2013
<?php
$path1='C:/ff/ss.html';
$file=file_get_contents($path 1);
$dom = new DOMDocument;
@$dom->loadHTML($file);
$links = $dom->getElementsByTagName('img');

//extract img src path from the html page 
foreach ($links as $link)
    {        
        $re= $link->getAttribute('src');
        $a[]=$re;
    }
$oldpth=explode('/',$path1);
$c=count($oldpth)-1;
$fname=$oldpth[$c];
$pth=array_slice($oldpth,0,$c);
$cpth=implode('/',$pth);
foreach($a as $v)
    {
        if(is_file ($cpth.'/'.$v))
            { 
                $c=explode('/',$v);
                $c[0]="xyz007";
                $f=implode('/',$c);
                $file=str_replace ($v,$f,$file);
            }
    }
$path2='C:/mail/newpath/';
$wnew=fopen($path2.$fname,'w+');
fwrite($wnew,$file);
?>
1 голос
/ 21 ноября 2011

Это действительно зависит от вашей структуры каталогов.Как я уверен, вы знаете, ../ поднимется на один уровень от текущего рабочего каталога, а / перейдет в корень.(Примечание. Корень вашего веб-сервера не обязательно является корневым каталогом вашего компьютера.)

Для согласованности, скажем, у вас есть подкаталог корневого каталога вашего веб-сервера с именем img, тогда /img/$filename всегда должен соответствовать тому, чтоожидаю.

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

Я не совсем уверен, что вы хотите, но у вас может быть что-то вроде:

<img scr="http://markdinwiddie.com/PHP2012/<?php echo $variable; ?>/<?php echo $anothervariable; ?>/" title="<?php echo $Title; ?>" alt="<?php echo $Title; ?>">

Это будет иметь часть 'http://markdinwiddie.com/PHP2012/' URL-адреса уже на месте, и вы можете использовать переменные изваша база данных, чтобы заполнить другие разделы ссылки.(С переменной $, являющейся одним разделом URL, и переменной $ $, являющейся второй частью URL.

Это должно повториться: (при условии, что $ variable = hi123, $ anothervariable = two2 и $ title = tilt)

<img scr="http://markdinwiddie.com/PHP2012/hi123/two2/" title="tilt" alt="tilt">

Надеюсь, что ответит на ваш вопрос (или хотя бы поможет).

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

Если вы хотите, чтобы он работал динамически, а также когда вы перемещаете его на свой сервер, введите переменную fullpath, скажем $dir = "http://markdinwiddie.com/PHP2012"; или $dir = "/PHP2012";, а затем назовите ваши изображения как:

<img src="$dir/$ArtFilePath" title="$Title" alt="$Title">
0 голосов
/ 21 ноября 2011

Говоря о путей , (не URL), все, что начинается с /, является абсолютным путем и работает из любой подпапки.

Таким образом, получить один начинается с / и работает - он будет работать через весь сайт.

Адрес сайта вообще не нужен. http://markdinwiddie.com должны использоваться только для адресации на других сайтах и ​​не должны использоваться для локальных ссылок.

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

Полный путь будет лучшим.

Вы можете создать другую переменную для имени домена / субдомена, а затем использовать полные пути в своих ссылках.

Вы также можете сделать его условным, основываясь на сервере, где скрипт запущен в данный момент, используя echo gethostname(); или php_uname('n');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...