Небольшой баг со слешами

Здравствуйте!

Хотелось бы получить комментарии разработчиков на такой момент:

в конфиге движка адрес сайта прописан так:
$config['path']['root']['url']      = 'http://'. $_SERVER['HTTP_HOST'] . '/';   // полный WEB адрес сайта

В результате, почти любая страница имеет адрес: site.ru//page, аналогично, после разлогинивания на сайте получаем редирект на главную, которая имеет адрес — site.ru//

Думаю, что наличие 2-х слешей вместо одного не есть правильно, поэтому я убрал в конфиге этот последний слеш (кстати, в LS его нет) и все стало нормально, но вот иногда все таки пробивает — залогиниваясь на странице, отличной от index, иногда слеш вообще не подставляется в адрес. Например, не залогинен, нахожусь на странице site.ru/page/1, жму залогиниться и после этого меня уже, как залогиненого перебрасывает на site.rupage/1

Похожие статьи


10 комментариев

+1
Слеш в конце путей был добавлен по моей инициативе. И я сейчас объясню, почему.

Нет времени искать ссылку на первоисточник, но, согласно правилам формирования URL, ссылки на папки/директории должны оканчиваться слешем. Если слеша нет, но считается что URL указывает на файл:
site.com/abc/ — ссылка на папку /abc/
site.com/abc.txt/ — ссылка на папку /abc.txt/
site.com/abc — ссылка на файл /abc
site.com/abc.txt — ссылка на файл /abct.xt

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

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

Итого — мое глубокое убеждение, что ссылки на папки (или «псевдопапки», как в LS, в Alto и других MVC-движках) должны заканчиваться слешем.

Двойной слеш, который иногда наблюдается, это побочный эффект от «наследства» LiveStreet'а. От него, разумеется, нужно избавляться (и мы избавляемся), но не удалением слеша в путях, а правкой шаблонов.
0
а можно попросить пример того, что именно в шаблоне вызывает образование второго слеша?

Насколько я понимаю ссылка такого вида: "/page/" не должна вызывать такой проблемы…
0
Варианты разные могут быть.

Напр., если в шаблоне задать {router page='page'}about/, то получим ссылку site.com/page/about/, а если так: {router page='page'}/about/, то получим ссылку с двойным слешем: site.com/page//about/.

Или если в шаблоне будет {cfg name='path.root.url'}/dir/, то опять получим двойной слеш: site.com//dir/

В общем, смотреть нужно. Впрочем, не исключаю, что и в движке где-то еще может остаться не совсем корректное формирование URL, приводящее к двойным слешам
0
Хотя лучше прямо спрошу — при разлогинивании на сайте всегда редиректит на site.ru//
Из-за чего этот эффект?
0
В версии, что на гитхабе — уже нет
0
а где конкретно это надо поправить, носом не тыкните?
0
я не знаю, есть в гитхабовской версии этот баг или нет, но все картинки и фото на сайте (на этом тоже) имеют в представлении сервера такой путь:
http://site.ru/uploads//images//.......

т.е. папка с изображениями отделяется с обеих сторон двойными слешами (а, например картинки модулей здесь в правом блоке еще и перед uploads добавляют один лишний слеш).
Это я к тому, что за формирование пути до картинки отвечает не шаблон, я нашел строки в user.entity.class.php, которые возвращают путь до аватаров и фоток, но вот что там править никак не пойму)))
0
ступил, это правится в файле image.class.php
0
Очень полезная тема, искал решение данной проблемы на сайте LS'a — нету. Сейчас LS 1.0.3 Перебрал все шаблоны, вроде бы все чисто. Думаю все из-за плагина авторизации через соц. сервисы. Спасибо большое aVadim за пояснения.
0
Помогите pls если кто знает:
Где прописать, чтобы картинки загружались под относительными путями (/uploads/...), а не абсолютными (http://site.com/uploads/...)?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.