Начальная косая черта гиперссылки? - PullRequest
3 голосов
/ 14 июля 2010

В моем php-скрипте я создал постоянную переменную, которая определяет базовый URL-адрес для моих гиперссылок, но действительно ли он мне нужен?

Вот пример того, что я имею в виду.

У меня есть это:

 // base url is only defined once and reused throughout
 define("__BASE_URL","http://localhost/test1/");
 print '<a href="'.__BASE_URL.'index.php?var1=open/>Open</a>';

(у меня их много по всему сценарию.)

Я попробовал это, и это работает:

 print '<a href="index.php?var1=open/>Open</a>';

Так, как правильно делать это? Я заметил, что второй способ работает даже при загрузке изображений, файлов CSS и JavaScript.

Ответы [ 3 ]

3 голосов
/ 14 июля 2010

Это действительно сводится к тому, как вы структурируете свой сайт. Относительные URL-адреса хороши (делая href="index.php", вы действительно говорите href="./index.php"), но они могут стать грязными, когда вы начнете распространять страницы по нескольким каталогам.

Лично мне нравится выводить все относительные URL-адреса из корневого каталога, то есть все мои URL начинаются с косой черты ('/'). Таким образом, не имеет значения, находится ли мой скрипт в / или / admin, поскольку у меня всегда будет постоянная контрольная точка - корень документа - в отличие от некоторого относительного каталога в структуре.

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

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

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

1 голос
/ 14 июля 2010

Это зависит.Без __BASE_URL ваша ссылка будет относительно текущего документа.В вашем случае это означает, что index.php должен находиться в том же каталоге, что и файл, на котором есть ссылка index.php.

Если у вас есть __BASE_URL, то ссылка будет работать независимо от того, где она содержится.файл находится (т.е. не обязательно должен находиться в том же каталоге, что и index.php).

Другой вариант - использовать только начальный слеш.Тогда ваша ссылка будет относиться к корню вашего домена:

print '<a href="/index.php?var1=open/>Open</a>';

Другими словами, приведенная выше ссылка будет указывать на http://localhost/index.php.

0 голосов
/ 14 июля 2010

Похоже, ваш вопрос касается абсолютных и относительных URL. Собираетесь ли вы на переносимость? Как правило, лучше использовать относительные URL-адреса, особенно если вы планируете работать в тестовой среде, а затем передавать файлы в производство.

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