Forums / National / Russian / Тех. поддержка / 0.9.x Новый URL Editor.

12>>>

Неправильная обработка отсутствующих страниц

Macik
#1 2011-09-29 23:15

Ставим 0.9.5 (из master ветки). Устанавливаем URL Editor. копируем sef-urls.htaccess в .htaccess.

Имеем некорректное поведение в случае ссылки на несуществующие страницы. 

Пример (пусть localhost/cotonti/ локальный адрес главной страницы), тогда :

http://localhost/cotonti/test/ -  худо-бедно покажет нам сообщение: Не найдено (404) 

http://localhost/cotonti/test/test.html (несуществующая) - отобразит нам главную страницу. 

С точки зрения здорового web'а оба варианта некорректны. Первый вариант некорректен т.к.отдает код 302 Found, что противоречил логике т.к. файл все-таки не найден. Второй еще хуже т.к. получаем 200 OK и главную страницу сайта.

Такое поведение системы плохо не только с точки зрения хорошего тона, но и с точки зрения SEO. Т.к. в данном случае механизм приводит к индексированию убитых и мусорных ссылок и "дублированию" содержимого главной страницы.

Варианты решения: 

- для первого случая отдавать код 404, а редирект делать например средствами JS.

- для второго случая править правила из sef-urls.htaccess, что бы сервер все-таки ненаходил отсутствующую страницу.

----------------------------------------------------------------

В дополнение: если установить URL Editor и перейти в раздел "Администрирования" (admin.php?m=other&p=urleditor)

Получаем Warning (3 шт.) при отсутствии файла. urltrans.dat

Warning: fopen(./datas/urltrans.dat) [function.fopen]: failed to open stream: No such file or directory in cotonti\plugins\urleditor\urleditor.admin.php on line 359
Warning: fgets(): supplied argument is not a valid stream resource in cotonti\plugins\urleditor\urleditor.admin.php on line 365
Warning: fclose(): supplied argument is not a valid stream resource in cotonti\plugins\urleditor\urleditor.admin.php on line 387

Учитывая, что система корректно отображает сообщение об ошибке (

Ошибка

  • Ошибка: datas/urltrans.dat недоступен для записи! Создайте его и установите CHMOD 666.

)

Правильнее было бы поставить @ дабы подавить предупреждения:

----------------------------------------------------------------------

PPS не совсем по теме: пытаюсь указать для данной темы Теги. и получаю нижеследующее и кучу мусора в строке ввода:

 

GET plug.php?r=tags&l=de&q=%253Cj%253E&limit=10&timestamp=1317337713370
200 OK
  177ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713376
200 OK
  287ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713382
200 OK
  318ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713386
200 OK
  346ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713391
200 OK
  342ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713395
200 OK
  306ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713472
200 OK
  336ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713476
200 OK
  355ms  
GET plug.php?r=tags&l=de&q=%253Cj%253E&limit=10&timestamp=1317337713480
200 OK
  390ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713484
200 OK
  385ms  
GET plug.php?r=tags&l=ru&q=%253Cj%253E&limit=10&timestamp=1317337713487
200 OK
  378ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713549
200 OK
  322ms  
GET plug.php?r=tags&l=de&q=%253Cj%253E&limit=10&timestamp=1317337713553
200 OK
  336ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713557
200 OK
  335ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713560
200 OK
  334ms  
GET plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713564
200 OK
  351ms  
GET de/plug.php?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713582
200 OK
  347ms  
GET index.php?e=plug&r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713586
404 Not Found
  373ms  
GET index.php?e=plug&r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713591
404 Not Found
  373ms  
GET de/plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713595
200 OK
  691ms  
GET ru/plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713599
200 OK
  571ms  
GET ru/plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713606
200 OK
  691ms  
GET ru/plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713609
200 OK
  698ms  
GET de/plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713613
200 OK
  1020ms  
GET de/plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713618
200 OK
  1025ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713622
200 OK
  821ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713627
200 OK
  827ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713659
200 OK
  809ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713665
200 OK
  878ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713669
200 OK
  922ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713674
200 OK
  883ms  
GET plug?r=tags&q=%253Cj%253E&limit=10&timestamp=1317337713689
200 OK
  970ms  

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#2 2011-09-30 08:44

Спасибо за тестирование! Я разбил этот отчет на тикеты.

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

May the Source be with you!
Macik
#3 2011-09-30 12:12

Замечательно. Спасибо.

На счет JS редиректов - понял. Тогда, действительно, лучше без редиректов. 

(Чисто субъективно - редиректы мешают, т.к. нет возможности проверить ссылку в адресной строке на предмет случайной опечатки, т.к. она меняется после редиректа.)

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#4 2011-10-01 18:00

Ошибки, связанные с ссылками устранил. Надо потестировать текущую версию.

С тегами такой ошибки воспроизвести не получилось. Возникает по-прежнему? Если да, то в каком браузере.

May the Source be with you!
Macik
#5 2011-10-03 01:47

(Слил текущую.)

Что касается отдаваемых кодов. То все вроде ОК.

Что касается несуществующей страницы, то все еще работает некорректно. (запросил с тестового сервера несуществующую страницу из несуществующего каталога test/test.html - получил главную страницу всесто "404"). Насройки из sef-urls.htaccess, там на сколько я понимаю последняя строка за это отвечает.

Что касается глюков с тегами - я видимо ввел в заблуждение, т.к. эта ошибка возникла не в master версии. А здесь на сайте cotonti.com когда я создавал тему. Но на всякий случай проверю на днях на Master... 

ps: Хорошо бы, если кто-то найдет силы/время написать небольшую инструкцию (how-to) как работать с версией на GitHub. В свое время была такая инструкция для разработчиков Котонти когда он лежал на SVN - все просто и понятно. У себя Гит настроил. Но в голове все-равно каша. В общем хочется простого описания хотябы как слить свежую мастер ветку себе. Как ответвится (не знаю надо ли это) если есть необходимость поправить что-то подсебя (например config или htaccess), что бы потом очередным обновлением с Master'а не затереть неглядя свои правки. Сам использую Eclipse+EGit, но думаю это не принципиально, операции будут одинаковыми.

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#6 2011-10-03 10:15

Статические страницы как исключения надо самостоятельно в начале .htaccess прописывать. Пример добавления статических папок test и myfolder:

# Default path and static files protection
RewriteRule ^(datas|images|js|test|myfolder)/(.*)$ $1/$2 [QSA,NC,NE,L]

Поскольку у каждого там свои папки/файлы могут быть, то тут универсальное правило не сделаешь.

May the Source be with you!
Graber
#7 2011-10-03 19:00

всеж обработку 404 нужно додумать.

domain.com/demo.html - ведет на главную
domain.com/plug.php?e=p404 - отдает страницу 404, но она на русском, а в хедере нет указания кодировки, получаем крокозябли

а вообще хорошо-бы иметь возможность указать страницу 404

Кто бездействует, тот не завоевывает
Macik
#8 2011-10-03 23:18
#30888 Trustmaster:

Статические страницы как исключения надо самостоятельно в начале .htaccess прописывать. Пример добавления статических папок test и myfolder:

# Default path and static files protection
RewriteRule ^(datas|images|js|test|myfolder)/(.*)$ $1/$2 [QSA,NC,NE,L]

Поскольку у каждого там свои папки/файлы могут быть, то тут универсальное правило не сделаешь.

Тут смысл в другом - несуществующие страницы не должны вести на главную, а дожны отдавать нормально 404. Иначе любая опечатка в адресе страницы (не важно где расположена ссылка на сайте или стороннем ресурсе) - будет приводить к тому, что кривая ссылка будет нормально индексироваться поисковиком как дубль главной страницы, что скорее всего ухудшит выдачу.

 

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Graber
#9 2011-10-04 07:48

Вот и я про это говорю, что несуществующие страницы ведут на главную.

Кто бездействует, тот не завоевывает
Alex300
#10 2011-10-05 06:24

Кроме этого для сео было бы хорошо чтобы если у страницы есть алияс, то при обращении к ней по id редиректить 301 на URL обращающейся к ней по алиясу. Так не будет страниц с дублированным контентом.

При включенном URL едиторе при обращении не по sef-ссылкам редирект 301 на sef ссылки (можно и опционально)

При обращении по старым ссылкам (от Genua) редирект на новые.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Trustmaster
#11 2011-10-05 08:08
#30901 Alex300:

Кроме этого для сео было бы хорошо чтобы если у страницы есть алияс, то при обращении к ней по id редиректить 301 на URL обращающейся к ней по алиясу. Так не будет страниц с дублированным контентом.

При включенном URL едиторе при обращении не по sef-ссылкам редирект 301 на sef ссылки (можно и опционально)

При обращении по старым ссылкам (от Genua) редирект на новые.

Для этого у нас есть такая штука как Canonical URL. Добавьте в header.tpl:

<link rel="canonical" href="{HEADER_CANONICAL_URL}" />

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

May the Source be with you!
Macik
#12 2011-10-31 09:17

В продолжение темы о некорректном повединии rewrite правил.

Проверьте, пожалуста, на последней master копии (сейчас нет возможности проверить), как обстоят дела со следующим:

site.com/robots.txt

меня на главную выкидывает вместо содержимого robots.txt  (0.9.5), собственно как и с остальными (кроме php) файлами в корне.

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#13 2011-10-31 13:31

Есть такое дело, и не только в корневой папке. Предлагаю добавить фильтр по расширениям файлов.

May the Source be with you!
Macik
#14 2011-10-31 16:12

Я так понимаю, что происходит это из за вот этой строки:

# All the rest goes through standard rewrite gateway
RewriteRule ^([^?]+) index.php?rwr=$1 [QSA,NC,NE,L]

 

Думаю настраивать исключающие правила на каждый чих - громоздко и затратно. Сегодная нам нужен robots.txt, завтра sitemap.xml и т.д.

Может правильнее будет в index.php проверять, что нам пришло в $_GET['rwr'] и если ссылка идет на несуществующий контент - отдавать 404 ошибку, а если существующий - показывать соотв. страницу или отдавать конечный файл.

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Chiaroscuro
#15 2012-02-08 21:23

При красивых ссылках присутствует и /forum.php и просто /forum, как то можно победить?

12>>>