Самописный сайт и ЧПУ

123
mff
На сайте с 21.02.2008
Offline
282
mff
#11

miketomlin, большое вам спасибо! Жаль не могу плюсануть.

devmastery:
Зачем городить велосипеды?

Нравится мне это дело!

С ув.

Управление репутацией в сети: https://timbook2.ru/
mff
На сайте с 21.02.2008
Offline
282
mff
#12

Коллеги, подскажите еще пожалуйста, как грамотно проверить, нет ли в URL двух и более слэшей подряд:

https://site.ru/russia// или https://site.ru////russia/

За ранее спасибо. С ув.

M
На сайте с 04.12.2013
Offline
223
#13

Как вариант, см. фильтр в статье по ссылке выше. На демосайте все работает: g09.ru///Articles///My-First-Article/// (только там трэйлинг слэши не используются, поэтому они полностью убираются).

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
mff
На сайте с 21.02.2008
Offline
282
mff
#14
miketomlin:
Как вариант, см. фильтр в статье по ссылке выше.

Оно:

if (strcmp($_SERVER['REQUEST_URI'],$p=strtolower(preg_replace('#//+#','/',$_SERVER['REQUEST_URI']))))

{
header('Location: http'.(empty($_SERVER['HTTPS'])?'://':'s://').$_SERVER['HTTP_HOST'].$p,true,301);
exit;
}

? С ув.

M
На сайте с 04.12.2013
Offline
223
#15

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

mff
На сайте с 21.02.2008
Offline
282
mff
#16

miketomlin, коллега, а как вы сделали так, что лишние слэши удаляются из адресной строки? Не совсем понятна для меня статья ваша :( С ув.

Станислав
На сайте с 27.12.2009
Offline
249
#17

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

И странно если честно, есть самопис, но нет роутера, роутер это самое основное в самописе, без него это какая то абракадбра с кучей файлов.

На счет связок Nginx и Apache, смысл то какой? Nginx один все делает, а тут получается сначало nginx чекает все, потом апач, хоть убейте не пойму для чего все это? А если третье что то появится, то и его по верх этих двух поставите?

Мы там, где рады нас видеть.
mff
На сайте с 21.02.2008
Offline
282
mff
#18
Ms-Dred:
есть самопис, но нет роутера

Я пишу роутер в данный момент. Вернее дописываю.

Ms-Dred:
хоть убейте не пойму для чего все это?

У меня хостинг, там апач. Или я чего то ни так понял?

suffix
На сайте с 26.08.2010
Offline
331
#19
Ms-Dred:

На счет связок Nginx и Apache, смысл то какой?

А какой смысл без Apache если нет проблем с количеством оперативки ?

Да, да я знаю что Apache её съедает много, но вот представьте что оперативки столько что базе данных и файловому кешу и вообще всем хватает и ещё запас в разы больше. Тогда зачем отказываться от кучи плюшек и удобства Apache ? Просто из-за моды ? Типа в 2019 году Apache используют только ламеры ?

Клуб любителей хрюш (https://www.babai.ru)
M
На сайте с 04.12.2013
Offline
223
#20

Код не мой. В общем-то большую часть работы выполняет процитированный вами код. Он самодостаточный. Можете вставить в «чистый фронт» и посмотреть.

За трэйлинг слэши отвечает фильтр в конфиге Web-сервера. Допустимо использовать несколько несвязанных фильтров, выполняющих редирект, только не нужно при этом, например, на каждый из множ. слэшей делать отдельный редирект, делайте все разом. Например, гляньте фрагменты конфига для апача (.htaccess) в начале и конце этой статьи. Лично мне всегда советовали ориентироваться на максимум три послед. редиректа: один в фильтре конфига Web-сервера, второй в фильтре фронта и третий - основное действие, реализуемое в виде редиректа.

P.S. Но если вы пропускаете во фронт трэйлинг слэши, то процитированный код будет обрабатывать и их.

Смысл разделения фильтров в том, что внутри фронта находится универсальный фильтр, пригодный для адресации как с трэйлинг слэшами, так и без, а в конфиге Web-сервера вы делаете настройки под конкретный сайт.

---------- Добавлено 22.02.2019 в 15:53 ----------

P.P.S. Но можно основываться и на др. принципах. Как я ранее писал, фронт тоже может быть тем местом, где делаются настройки под конкретный сайт.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий