Перейти к публикации

Ошибки в ссылках DataLife Engine


Рекомендованные сообщения

Здравствуйте уважаемые разработчики.

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

Суть вот в чём:

- в HTML ссылки вида href="/file указывают на файл выше ссылки

- на файл в этом же каталоге указывают ссылки вида ссылки вида href="file

То есть это совершенно разные адреса:

<a href="/blabla.php">ссылка 1</a>

<a href="blabla.php">ссылка 2</a>

В DataLife Engine с самого начала в темплейтах все локальные ссылки почему-то были вида href="/file

Если DataLife Engine установить в корень сайта, то ошибок не возникало, т.к. сервер попросту не пускал никого выше папки сайта. А вот если установить DataLife Engine не в корень сайта, то некоторые картинки оформления, ссылки меню, и т.д. - были неправильными, картинки не показывались, ссылки не открывались.

Пожалуйста, будьте так любезны, исправьте наконец в темплейтах ссылки вида href="/blabla.php на правильные, то есть на href="blabla.php

Спасибо.

Изменено пользователем Trewq
Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, вот примеры.

Берём DataLife Engine v6.0

Открываем блокнотом файл templates\Default\main.tpl

С помощью поиска ищем href="/

Находим 14 таких неправильных ссылок:

<a href="/index.php"><img src="{THEME}/images/dlet_ic_home.gif" width="11" height="10" border="0" /></a>

<a href="/index.php?do=feedback"><img src="{THEME}/images/dlet_ic_feedback.gif" width="11" height="9" border="0" /></a>

<a href="/index.php"><img src="{THEME}/images/dlet_top_22_2.gif" width="167" height="25" border="0" /></a>

<a href="/index.php">Главная</a>

<a href="/index.php?do=register">Регистрация</a>

<a href="/index.php?do=stats">Статистика</a>

<a href="/index.php?do=feedback">Контакты</a>

<a href="/engine/rss.php">RSS 2.0</a>

<a href="/index.php?do=search&mode=advanced">Расширенный поиск</a>

и т.д....

Правильные ссылки будут без слэша после кавычек , например:

<a href="index.php?do=register">Регистрация</a>

Ну или если полностью соблюдать стандарты HTML, то можно перед слэшем поставить точку:

<a href="./index.php?do=register">Регистрация</a>

Точка будет указывать, что файл index.php лежит на сайте в этом же каталоге.

Сейчас же все локальные ссылки в DataLife Engine именно со слэшем без точки, что равносильно двум точкам перед слэшем:

<a href="../index.php?do=register">Регистрация</a>

То есть две точки указывают, что файл index.php лежит на сайте на каталог выше.

И если DataLife Engine установлен не в корень сайта, а в папку (например папка "dle"), то по ссылке Регистрация открывается не регистрация в DataLife Engine, а index.php корня сайта.

Изменено пользователем Trewq
Ссылка на сообщение
Поделиться на других сайтах

А вот вы про что.

Я не считаю это ошибкой, ибо 2 слеша подряд никакой роли не играют.

К примеру ваша тема на форуме доступна и по адресу

http://forum.dle-news.ru///index.php?showtopic=35118

Ну там я погорячился и 3 слеша поставил, но и с двумя тот же результат

Ссылка на сообщение
Поделиться на других сайтах

Вы не поняли. Создайте у себя на сервере папку dle, назовите HTML-файл test.php, напишите в нём вот такую строку:

<a href="/test.php">Регистрация</a>

И положите HTML-файле в папку dle.

При щелчке на ссылку у вас будет открываться не text.php в папке dle, а браузер будет пытаться открыть несуществующий файл text.php в корне сайта.

Если использовать DataLife Engine не в корне сайта, а в любой папке, то локальные ссылки с такой ошибкой не открываются.

<a href="/test.php">Регистрация</a> ссылка указывает на каталог выше (слэш перед именем файла)

<a href="test.php">Регистрация</a> ссылка указывает на этот же каталог (без слэша перед именем файла)

<a href="../test.php">Регистрация</a> ссылка указывает на каталог выше (две точки и слэш перед именем файла)

<a href="./test.php">Регистрация</a> ссылка указывает на этот же каталог (одна точка и слэш перед именем файла)

Это спецификация языка HTML.

Изменено пользователем Trewq
Ссылка на сообщение
Поделиться на других сайтах

Понял теперь. Видимо никто до вас не ставил DLE в папку.

Либо исправляйте ссылки, либо

<base href="http://sitename.ru/ваша папка/">

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

Понял теперь. Видимо никто до вас не ставил DLE в папку.

Либо исправляйте ссылки, либо

<base href="http://sitename.ru/ваша папка/">

Вы извините, но вы так и не перестаёте не понимать.

1. В ссылках DLE присутствует ошибка.

2. Я уже давно у себя всё исправил.

3. Я разработчику показываю ошибку.

4. Вы мне отвечаете "исправляйте".

5. Ни я, и ни другие пользователи, никто - понимаете, совершенно НИКТО не обязан, заплатив деньги, исправлять брак разработчика.

Свой брак разработчик обязан исправить сам! И никаким боком тут не имеет значения в какую папку любой покупатель ставит DLE. Если вы и есть разработчик, то глядя на ваши ответы становится понятно почему до сих пор в DLE простейшие ошибки HTML. Если вы не разработчик, то пожалуйста перестаньте нести чушь. Если бы речь шла о бесплатном софте, то я вообще бы просто молча исправил ссылки и ничего никому не сказал, ибо разработчик мне был бы ничем не обязан. А DLE платный софт, так что будьте любезны.

Изменено пользователем Trewq
Ссылка на сообщение
Поделиться на других сайтах

Trewq, согласен с вами. Я не разработчик, просто практически все покупные скрипты я меняю под свои нужны и эти ошибки как бы меняю заодно. Вы правы. Разработчика к ответу! B)

Ссылка на сообщение
Поделиться на других сайтах

Всё на самом деле банально просто...нужно поковырятся.... Заходим в настройки системы и в пункте адресс сайта меняем с ввв.домен.ру на ввв.домен.ру/дле

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

Ссылка на сообщение
Поделиться на других сайтах

<a href="/test.php">Регистрация</a> ссылка указывает на каталог выше (слэш перед именем файла)

...

Это спецификация языка HTML.

Это вы что-то напутали - слэш перед именем файла указывает на то, что данный файл лежит в корневом каталоге, а никак не "на каталог выше".

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

Ссылка на сообщение
Поделиться на других сайтах

Всё на самом деле банально просто...нужно поковырятся.... Заходим в настройки системы и в пункте адресс сайта меняем с ввв.домен.ру на ввв.домен.ру/дле

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

Очаровательно "банально просто". Но при изменениях настроек системы "скрипт будет распознавать папку дле как корневую папку", а ссылки, о которых речь выше - НЕ БУДУТ распознавать папку DLE как корневую папку.

Скрипт DLE - хороший скрипт, его можно использовать для разных каталогов, и на сайте можно поставить несколько DLE, один будет каталогом фильмов, второй новостями, третий складом с софтом. И всё это можно установить не в корень. Но у разработчика ошибка в ссылках. И поэтому давайте закончим давать советы "банально просто", ибо банальнее и проще исправить эти ошибки в дистрибутиве скрипта при его разработке.

Это вы что-то напутали - слэш перед именем файла указывает на то, что данный файл лежит в корневом каталоге, а никак не "на каталог выше".

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

Почему оно с ошибкой в ссылках работает на сайтах - написано выше (1 сообщение этой темы). И если вы считаете, что напутал я, то откройте спецификацию HTML и сами увидите, что слэш перед именем файла указывает на то, что данный файл лежит на каталог выше. Но если это вас не убедит, то установите DLE в любую папку ниже корня сайта и увидите, что эти ссылки со слэшем работать не будут.

Изменено пользователем Trewq
Ссылка на сообщение
Поделиться на других сайтах

И если вы считаете, что напутал я, то откройте спецификацию HTML и сами увидите, что слэш перед именем файла указывает на то, что данный файл лежит на каталог выше. Но если это вас не убедит, то установите DLE в любую папку ниже корня сайта и увидите, что эти ссылки со слэшем работать не будут.

Может мне еще в школу пойти учиться :) ?

"Uniform Resource Identifiers (URI): Generic Syntax", T. Berners-Lee, R.Fielding, L.Masinter, август 1998. Обратите внимание, что этот RFC 2396 обновляет [RFC1738] и [RFC1808].

A relative reference beginning with a single slash character is

termed an absolute-path reference, as defined by <abs_path> in

Section 3.

A relative reference that does not begin with a scheme name or a

slash character is termed a relative-path reference.

rel_path = rel_segment [ abs_path ]

rel_segment = 1*( unreserved | escaped |

";" | "@" | "&" | "=" | "+" | "$" | "," )

Within a relative-path reference, the complete path segments "." and

".." have special meanings: "the current hierarchy level" and "the

level above this hierarchy level", respectively. Although this is

very similar to their use within Unix-based filesystems to indicate

directory levels, these path components are only considered special

when resolving a relative-path reference to its absolute form

Ссылка на сообщение
Поделиться на других сайтах

Может мне еще в школу пойти учиться ?

Может и пойти, учиться не хотят только дураки, вы же не хотите, чтобы вас таковым считали.

Вот тут по поводу слэша в ссылках всё от печки показано: http://neponyatlovomu.narod.ru

Ссылка на сообщение
Поделиться на других сайтах

Может мне еще в школу пойти учиться ?

Может и пойти, учиться не хотят только дураки, вы же не хотите, чтобы вас таковым считали.

Вот тут по поводу слэша в ссылках всё от печки показано: http://neponyatlovomu.narod.ru

Ага, это типа сайт, который "откройте спецификацию HTML" ? А я то дурак думал, что привел цитаты с сайта описания спецификации Uniform Resource Identifiers (URI).

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

З.Ы. Интересно, какие "аргументы" приведет владелец сайта непонятливому дураку вместо "Щёлкай, и ты увидишь, что попадёшь на папку выше.", если поместит свой файлик по адресу http://neponyatlovomu.narod.ru/test/test1/test2/link.htm :) ?

Ссылка на сообщение
Поделиться на других сайтах

Ага, это типа сайт, который "откройте спецификацию HTML" ? А я то дурак думал, что привел цитаты с сайта описания спецификации Uniform Resource Identifiers (URI).

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

З.Ы. Интересно, какие "аргументы" приведет владелец сайта непонятливому дураку вместо "Щёлкай, и ты увидишь, что попадёшь на папку выше.", если поместит свой файлик по адресу http://neponyatlovomu.narod.ru/test/test1/test2/link.htm :) ?

Дискуссия действительно бесполезна, если наглядный пример не воспринимаете. А если поместить файлик в test/test1/test2, то ссылка со слэшем выведет в корень сайта, но это уже похоже вас совсем заставит не учиться, поэтому в теме объяснено всё проще. Увы, но даже и так не доходит.

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

Изменено пользователем Trewq
Ссылка на сообщение
Поделиться на других сайтах

...А если поместить файлик в test/test1/test2, то ссылка со слэшем выведет в корень сайта, но это уже похоже вас совсем заставит не учиться, поэтому в теме объяснено всё проще. Увы, но даже и так не доходит.

Стоило так много писать прежде чем признать свою ошибку и правоту написанного выше в посте #12 :) .

Dixi.

Изменено пользователем Akela
Ссылка на сообщение
Поделиться на других сайтах

Может и пойти, учиться не хотят только дураки, вы же не хотите, чтобы вас таковым считали.

Вот тут по поводу слэша в ссылках всё от печки показано: http://neponyatlovomu.narod.ru

Etot website vam nichego ne ob'yasnil. Pochitaite normal'nyu stat'yu zdes':

Here is some info from pros:

:)

 The URL structure defines a hierarchy (or relationship) that is similar to the hierarchy of subdirectories (or folders) in the filesystems used by most computer operating systems. The segments of a URL are separated by slash characters ("/"). When navigating the URL hierarchy, the final segment of the URL (i.e., everything after the final slash) is similar to a file in a filesystem. The other segments of the URL are similar to the subdirectories and folders in a filesystem.


A relative URL omits some of the information needed to locate the referenced document. The omitted information is assumed to be the same as for the base document that contains the relative URL. This reduces the length of the URLs needed to refer to related documents, and allows document trees to be accessed via multiple access schemes (e.g., "file", "http", and "ftp") or to be moved without changing any of the embedded URLs in those documents.


Before the browser can use a relative URL, it must resolve the relative URL to produce an absolute URL. If the relative URL begins with a double slash (e.g., //www.htmlhelp.com/faq/html/), then it will inherit only the base URL's scheme. If the relative URL begins with a single slash (e.g., /faq/html/), then it will inherit the base URL's scheme and network location.


If the relative URL does not begin with a slash (e.g., all.html , ./all.html or ../html/), then it has a relative path and is resolved as follows.


   1. The browser strips everything after the last slash in the base document's URL and appends the relative URL to the result.

   2. Each "." segment is deleted (e.g., ./all.html is the same as all.html, and ./ refers to the current "directory" level in the URL hierarchy).

   3. Each ".." segment moves up one level in the URL hierarchy; the ".." segment is removed, along with the segment that precedes it (e.g., foo/../all.html is the same as all.html, and ../ refers to the parent "directory" level in the URL hierarchy). 


Some examples may help make this clear. If the base document is <URL:http://www.htmlhelp.com/faq/html/basics.html>, then


all.html and ./all.html

	refer to <URL:http://www.htmlhelp.com/faq/html/all.html> 

./

	refers to <URL:http://www.htmlhelp.com/faq/html/> 

../

	refers to <URL:http://www.htmlhelp.com/faq/> 

../cgifaq.html

	refers to <URL:http://www.htmlhelp.com/faq/cgifaq.html> 

../../reference/

	refers to <URL:http://www.htmlhelp.com/reference/> 


Please note that the browser resolves relative URLs, not the server. The server sees only the resulting absolute URL. Also, relative URLs navigate the URL hierarchy. The relationship (if any) between the URL hierarchy and the server's filesystem hierarchy is irrelevant.

See also


	* W3C's Naming and Addressing: URIs, URLs, ...

	* RFC 3986: Uniform Resource Identifier (URI): Generic Syntax 


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...