2010-04-22 2 views
1

Является ли html <base> тегом безопасным для использования с точки зрения поддержки браузера? Или я должен генерировать корневой путь с PHP, который затем добавляю так: <a href="<?=BASE?>somepage.html">somepage</a>, который составляет абсолютный URL-адрес.html/php: как обрабатывать абсолютные URL?

с использованием базового тега, как этот <base href="<?=BASE?>" /> я тогда в состоянии использовать ссылки как этот

<a href="somepage.html">somepage</a> 

теперь я прекрасно понимаю, что это было бы гораздо проще просто сделать это без использования базового тега:

<a href="/somepage.html">somepage</a> 

но как я могу проверить локально, тогда с базовым адресом http://localhost/testsite/ ???

редактировать: спасибо, ребята, ваши люди, которые делают StackOverflow сообщества настолько велик :)

ответ

1

Comming вернуться к этому вопросу через 2 года, теперь я понимаю, что лучший способ справиться с абсолютными URL, чтобы поместить URL в функцию обертки, например, так:

<a href="<?php echo url('/somepage.html');?>">somepage</a> 

функция упаковщик затем дает вам полный контроль над обработкой URL-адресов

function url($url){ 
    if(strpos($url,'/')===0){ 
     return 'http://localhost/testsite'.$url; 
    }else{ 
     return $url; 
    } 
} 
1

мне нравится первый вариант, выводя базового каталога в PHP теги

<a href="<?=BASE?>somepage.html">somepage</a> 

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

<base> безопасен в использовании с точки зрения поддержки браузера, но я лично настоятельно рекомендую использовать его для удобства обслуживания кода. <base> изменяет правила обработки URL-адресов; вам нужно сохранить базу в виду для всех относительных URL; и его очень легко упускать из виду. С точки зрения программирования, это похоже на грязное исправление.

+0

так что, по вашему мнению, я должен добавить базовый каталог для каждой ссылки? –

+0

@Yuri Я делаю так, да, но я разрабатываю приложения, которые необходимо развернуть в подкаталогах, таких как '/ subdir/appname/index.html', так что это либо' '. Вам это не всегда нужно. Подход Jimmy к простому исправлению виртуального хоста будет работать нормально, если ваша проблема ограничена вашей локальной тестовой средой, но ваше приложение или сайт не смогут легко использовать подкаталог таким образом - пути будут жестко закодированы для корневой каталог. –

+0

Ответ принят, его способ ive делал это в течение некоторого времени, я просто думал, что базой является способ уменьшить использование html, но, похоже, нет истинного выхода, кроме случаев, когда я использую сочетание этого и трюка jimmys. –

1

Моей рекомендацией было бы использовать абсолютные URL-адреса, начинающиеся с косой черты, и просто настроить виртуальный хост, который использует /localhost/testsite/ в качестве своего корня документа. Затем вы можете оставить абсолютные URL-адреса и просто получить доступ к своему сайту примерно с http://testsite/ локально.

+0

О, я знал, что есть какое-то простое решение! Если бы я только знал, как настроить виртуальный хост ... тогда вернитесь к Google. Но что, если я хочу изменить домен/поддомен? –

+0

URL-адреса ваших ссылок не будут меняться независимо от того, какое имя хоста используется для доступа к сайту. В этом красота этого метода. Когда вы создаете виртуальный хост, вы можете указать имя хоста, которое оно будет использовать. Если вам когда-либо понадобится изменить его, это так же просто, как изменение файла конфигурации. –

+0

действительная точка, теперь я думаю, что могу использовать все 3 метода связывания. базовые ссылки, абсолютные ссылки и относительные ссылки. –

1

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

Это означает, что заголовки href's, src, action и даже HTTP Location должны знать об этом изменении. Вот почему я рекомендую добавлять ваши uri с <?php echo SITE_BASE ?> или любым другим, что вы хотите назвать.

Дебаты могут влиять на то, должен ли SITE_BASE содержать конечную косую черту.

+0

спасибо за ответ, это очищает меня, показывая, что база - это не путь. –

Смежные вопросы