Чтение RSS каналов

Форум

Открыть Ответить

Вопрос по 404 ошибке и маршрутизатор ссылок

1

1
1
03.11.2017 19:42:0010.11.2017 18:08:48
В логах вижу, что боты поисковиков часто заходят по несуществующим ссылкам, точнее даже сказать по неправильным ссылкам вида https://sayt.ru/index.php/blablabla/tratata/ururu/brands-iWYv34jy3x.jpg и ссылки могут быть как совсем короткими, так и капец какими длинными. Откуда они взялись - вопрос другой. Сейчас беспокоит то, что при переходе по такой явно неправильной ссылке, не отрабатывает 404 ошибка. Даже на slaed.net если попробуете подставить вот ту ссылку, которую выше привел, то увидите о чем я говорю.

Вопрос: как сделать так, чтобы при переходе по подобным ссылкам отдавалась бы 404 ошибка?


Версия системы: SLAED CMS 6.* Pro
Версия PHP: 7
3.96

3.96
2
05.11.2017 18:52:10
Отключить ЧПУ пробовали?
Это конечно не решение, но причина связана с правилами файла: .htaccess

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.22

3.22
3
10.11.2017 15:22:3010.11.2017 18:22:20
К стати, идея реализации маршрутизатора ссылок летает в воздухе уже давно. Но воплотить это не так просто, как могло бы показаться на первый взгляд, потребуется модификация все участков системы, всего кода ядра. Таким образом придётся изменить все функции, в которых генерируются внутренние ссылки системы.

Думаю что время пришло, постараюсь реализовать в следующей версии CMS.

В этом случае данный участок кода файла: .htaccess отпадёт за ненадобностью
RewriteRule ^index.html$																									index.php [N]

# All standart moduls and RSS
RewriteRule ^rss-num-([0-9]*).html$																					index.php?go=rss&num=$1 [NC]
RewriteRule ^rss-([a-zA-Z0-9_]+)-num-([0-9]*).html$															index.php?go=rss&name=$1&num=$2 [NC]
RewriteRule ^rss-([a-zA-Z0-9_]+)-id-([0-9]*).html$																index.php?go=rss&name=$1&id=$2 [NC]
RewriteRule ^rss-([a-zA-Z0-9_]+)-([0-9]*)-num-([0-9]*).html$												index.php?go=rss&name=$1&cat=$2&num=$3 [NC]
RewriteRule ^rss-([a-zA-Z0-9_]+)-([0-9]*).html$																	index.php?go=rss&name=$1&cat=$2 [NC]
RewriteRule ^rss-([a-zA-Z0-9_]+).html$																				index.php?go=rss&name=$1 [NC]
RewriteRule ^rss.html$																										index.php?go=rss [NC]
RewriteRule ^open-search.html$																							index.php?go=search [NC]
RewriteRule ^([a-zA-Z0-9_]+)-clients.html$																			index.php?name=$1&op=clients [NC]
RewriteRule ^([a-zA-Z0-9_]+)-partners.html$																		index.php?name=$1&op=partners [NC]
RewriteRule ^([a-zA-Z0-9_]+)-edithome.html$																		index.php?name=$1&op=edithome [NC]
RewriteRule ^([a-zA-Z0-9_]+)-logout-refer.html$																	index.php?name=$1&op=logout&refer=1 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-logout.html$																			index.php?name=$1&op=logout [NC]
RewriteRule ^([a-zA-Z0-9_]+)-newuser.html$																		index.php?name=$1&op=newuser [NC]
RewriteRule ^([a-zA-Z0-9_]+)-passlost.html$																		index.php?name=$1&op=passlost [NC]
RewriteRule ^([a-zA-Z0-9_]+)-privat.html$																			index.php?name=$1&op=privat [NC]
RewriteRule ^([a-zA-Z0-9_]+)-privat-(.*).html$																	index.php?name=$1&op=privat&uname=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-favorites.html$																		index.php?name=$1&op=favorites [NC]
RewriteRule ^([a-zA-Z0-9_]+)-info-(.*).html$																		index.php?name=$1&op=view&uname=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-rech-([0-9]*).html$																index.php?name=$1&op=rech&id=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-avatar-(.*).html$																	index.php?name=$1&op=saveavatar&avatar=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-view-([0-9]*)-([0-9]*)-([0-9]*).html$										index.php?name=$1&op=view&id=$2&pag=$3&num=$4 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-view-([0-9]*)-([0-9]*).html$													index.php?name=$1&op=view&id=$2&num=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-view-([0-9]*)-word-(.*).html$													index.php?name=$1&op=view&id=$2&word=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-view-([0-9]*)-last.html$															index.php?name=$1&op=view&id=$2&last [NC]
RewriteRule ^([a-zA-Z0-9_]+)-view-([0-9]*).html$																index.php?name=$1&op=view&id=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-broken-([0-9]*).html$															index.php?name=$1&op=broken&id=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-let-(.*)-([0-9]*).html$															index.php?name=$1&op=liste&let=$2&num=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-let-(.*).html$																		index.php?name=$1&op=liste&let=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-list-([0-9]*).html$																	index.php?name=$1&op=liste&num=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-list.html$																				index.php?name=$1&op=liste [NC]
RewriteRule ^([a-zA-Z0-9_]+)-kasse.html$																			index.php?name=$1&op=kasse [NC]
RewriteRule ^([a-zA-Z0-9_]+)-add-([0-9]*)-0-([0-9]*)-([0-9]*).html$									index.php?name=$1&op=add&cat=$2&id=0&pid=$3&qid=$4 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-add-([0-9]*)-([0-9]*)-([0-9]*).html$										index.php?name=$1&op=add&cat=$2&id=$3&pid=$4 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-add-([0-9]*)-0-([0-9]*).html$													index.php?name=$1&op=add&cat=$2&id=0&pid=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-add-([0-9]*).html$																index.php?name=$1&op=add&cat=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-add.html$																				index.php?name=$1&op=add [NC]
RewriteRule ^([a-zA-Z0-9_]+)-delete-([0-9]*)-([0-9]*).html$												index.php?name=$1&op=delete&cat=$2&id=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-sort-([0-9]*)-([0-9]*).html$													index.php?name=$1&sort=$2&num=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-sort-([0-9]*).html$																index.php?name=$1&sort=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-cat-([0-9]*)-word-(.*).html$													index.php?name=$1&cat=$2&word=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-cat-([0-9]*)-sort-([0-9]*)-([0-9]*).html$									index.php?name=$1&cat=$2&sort=$3&num=$4 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-cat-([0-9]*)-sort-([0-9]*).html$												index.php?name=$1&cat=$2&sort=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-cat-([0-9]*)-([0-9]*).html$													index.php?name=$1&cat=$2&num=$3 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-cat-([0-9]*).html$																	index.php?name=$1&cat=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-word-(.*).html$																		index.php?name=$1&word=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-([0-9]*).html$																		index.php?name=$1&num=$2 [NC]
# RewriteRule ^([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+)-atime-(.*)-dtime-(.*)-word-(.*)-([0-9]*).html$	index.php?name=$1&mod=$2&atime=$3&dtime=$4&word=$5&num=$6 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+)-word-(.*)-([0-9]*)-([0-9]*).html$					index.php?name=$1&mod=$2&word=$3&typ=$4&num=$5 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+)-word-(.*)-([0-9]*).html$									index.php?name=$1&mod=$2&word=$3&num=$4 [NC]
RewriteRule ^([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+).html$															index.php?name=$1&mod=$2 [NC]
RewriteRule ^([a-zA-Z0-9_]+).html																						index.php?name=$1 [NC]


Соответственно будет заменён на следующий
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [QSA,L]

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.22

3.22
4
10.11.2017 17:23:3410.11.2017 17:23:59
Отлично. Не совсем понятно, но все равно круто. Ждем и походу будем разбираться и вносить изменения в свою сборку
3.96

3.96
5
26.11.2017 10:54:0626.11.2017 11:52:25
Как сделать так:
категория: домен.зона/модуль/название_категории.html
страница: домен.зона/модуль/название_категории/название_страницы.html

Сейчас так (пример)
категория https://sportlife.market/shop-cat-turisticheskoe_snaryazhenie.html
страница: https://sportlife.market/shop—spalniy_meshok_camp_bag_na_leto.html

Но дело в том, что дефис - это символ не из стандартного набора, а потому часто заменяется на абракадабру "%E2%80%94", чем создаёт лишние проблемы на сторонних ресурсах. Заменить дефис на тире не получается, так как ЧПУ начинает тупить из-за схожих комбинаций при обработке hacsess.

Цель: уйти от "-cat-" и "-view". И желательно чтобы в адресной строке после модуля шла косая. Поисковые системы проще идентифицируют такие ссылки, как содержащие каталог, что добавляет плюсу к продвижению, как к структуре с иерархией.
4.22

4.22
6
27.11.2017 20:25:0627.11.2017 20:30:38
Думаю что следует прояснить ситуацию с ссылками в адресной строке, на следующем примере.

index.php?name=files&cat=4&op=view&id=1525

index.php - основной файл, при использование в ЧПУ его можно вырезать, так как используется во всех участка системы на стороне пользователя.

name=files - имя модуля в который должен произойти переход. Является уникальным, обязательным параметром. В случае использования только одного модуля системы возможно его удаление в ЧПУ, но потребуется внести некоторые изменения.

cat=4 - идентификационный номер категории из базы данных. Параметр является условно обязательным, возможно удаление в ЧПУ, но только в том случае если категории в модуле не используются.

op=view - название функции соответствующего модуля, данный параметр является уникальным, обязательным. Удаление в ЧПУ возможно только в случае использования одной функции соответствующего модуля, так же потребуются манипуляции.

id=1525 - идентификационный номер материала запрашиваемого из базы данных, который как и остальные участки ссылки описанные выше является обязательным, удаление его в ЧПУ является наиболее сложным, как правило практической пользы не несёт (овчинка выделки не стоит), только в ущерб функционалу.

? и & - являются разделителями.

/ - символ слеша, в компьютерном стандарте используется в каталогах. На сколько мне известно, поисковые системы при виде таковых в адресной строке, определяют уровень вложения, а именно важности материала относительно главной страницы.

На примере это значит что:

каталог/каталог/
будет выше чем
каталог/каталог/каталог/

В системе не используется принцип вложения каталогов, как на обычных HTML сайтах от которых изначально идёт этот понятие. Страницы генерируются динамически, в стандартном ЧПУ страницы типа: news-view-617.html остаются на самом высоком уровне если применить понятие вложения как в каталогах.

Вопрос! Для чего же искусственно опускать важность страниц, относительно главной страницы?

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

В случае использования слеша (косая черта) следует в главном файле: .htaccess
После: RewriteEngine On
Добавить: RewriteBase /

В файлах: .htaccess и config/config_rewrite.php переписать правила, заменив дефисы на слеши.

P.S.: Как и писал ранее, в системе будет реализован новый принцип маршрутизации ссылок адресной строки, который будет более универсальный в плане использования ЧПУ. Работы уже практически начались, протестировать можно будет на нашем проекте уже в ближайшее время. Доступен функционал станет уже в следующей версии, выход которой планируется ещё в этом году.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.22

3.22
7
27.11.2017 23:51:1527.11.2017 23:54:38
Эдуард, благодарю за столь развёрнутый ответ.


По преобразованию всё понятно. Вроде так всё и делал. но чего-то не получилось. Т.е. когда менял на дефис, то всё работало, а когда решил заменить на /, то чего-то всё сразу пошло на перекосяк. Поэтому и спросил.
а .htaccess сейчас выглядит так:.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP
RewriteRule ^index\.php$ https://sportlife.market [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP
RewriteRule ^index\.php$ https://sportlife.market [R=301,L]
RewriteBase /
( все перегоняю на единый адрес https://sportlife.market )

Вобщем, ничего сверхестественного нет в рекомендации, и должно работать. Буду смотреть.

По поводу занижения уровней. Исхожу из соображений продвижения на основе передачи ссылочного веса.(Как одного из параметров, учитываемого при ранжировании сайта)
Т.е. На третьем уровне перелинкованные ссылками страницы передают вес на второй уровень. Соответственно со второго на первый. Чем выше ссылочный вес страницы, тем выше она в результатах поиска (для Гугла). Таким образом можно влиять на определённый каталог для продвижения.
Ну ещё яндекс вебмастер скидывает всё в кучу- не разделяет по структуре.

Я тогда подожду новой версии. Чую там нововведений мильён )
4.22

4.22
8
29.11.2017 21:50:51
Хотел бы обратить внимание на продолжение темы: SEO, ЧПУ, Open Graph - Маршрутизатор и генерация ссылок системы

Всех неравнодушных, кого интересует этот вопрос, прошу принять участие в дискуссии.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
3.22

3.22
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь