Неправильная обработка отсутствующих страниц
Macik |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ставим 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 Учитывая, что система корректно отображает сообщение об ошибке ( Ошибка
) Правильнее было бы поставить @ дабы подавить предупреждения: ---------------------------------------------------------------------- PPS не совсем по теме: пытаюсь указать для данной темы Теги. и получаю нижеследующее и кучу мусора в строке ввода:
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Trustmaster |
|
---|---|
Спасибо за тестирование! Я разбил этот отчет на тикеты. Ремарка только по поводу редиректов: редиректы через JS нам не подходят, потому что движок должен быть полностью работоспособен и в случае noscript. Поэтому лучше, пожалуй, отображать ошибку на месте, без редиректов. May the Source be with you!
|
Macik |
|
---|---|
Замечательно. Спасибо. На счет JS редиректов - понял. Тогда, действительно, лучше без редиректов. (Чисто субъективно - редиректы мешают, т.к. нет возможности проверить ссылку в адресной строке на предмет случайной опечатки, т.к. она меняется после редиректа.)
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Trustmaster |
|
---|---|
Ошибки, связанные с ссылками устранил. Надо потестировать текущую версию. С тегами такой ошибки воспроизвести не получилось. Возникает по-прежнему? Если да, то в каком браузере. May the Source be with you!
|
Macik |
|
---|---|
(Слил текущую.) Что касается отдаваемых кодов. То все вроде ОК. Что касается несуществующей страницы, то все еще работает некорректно. (запросил с тестового сервера несуществующую страницу из несуществующего каталога 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 |
|
---|---|
Статические страницы как исключения надо самостоятельно в начале .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 |
|
---|---|
всеж обработку 404 нужно додумать.
domain.com/demo.html - ведет на главную а вообще хорошо-бы иметь возможность указать страницу 404 Кто бездействует, тот не завоевывает
|
Macik |
|
---|---|
#30888 Trustmaster: Тут смысл в другом - несуществующие страницы не должны вести на главную, а дожны отдавать нормально 404. Иначе любая опечатка в адресе страницы (не важно где расположена ссылка на сайте или стороннем ресурсе) - будет приводить к тому, что кривая ссылка будет нормально индексироваться поисковиком как дубль главной страницы, что скорее всего ухудшит выдачу.
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Graber |
|
---|---|
Вот и я про это говорю, что несуществующие страницы ведут на главную. Кто бездействует, тот не завоевывает
|
Alex300 |
|
---|---|
Кроме этого для сео было бы хорошо чтобы если у страницы есть алияс, то при обращении к ней по id редиректить 301 на URL обращающейся к ней по алиясу. Так не будет страниц с дублированным контентом. При включенном URL едиторе при обращении не по sef-ссылкам редирект 301 на sef ссылки (можно и опционально) При обращении по старым ссылкам (от Genua) редирект на новые. Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/ |
Trustmaster |
|
---|---|
#30901 Alex300: Для этого у нас есть такая штука как Canonical URL. Добавьте в header.tpl: <link rel="canonical" href="{HEADER_CANONICAL_URL}" /> Он будет для "неправильных" ссылок говорить поисковику, что это дубликат документа по канонической ссылке. May the Source be with you!
|
Macik |
|
---|---|
В продолжение темы о некорректном повединии rewrite правил. Проверьте, пожалуста, на последней master копии (сейчас нет возможности проверить), как обстоят дела со следующим: site.com/robots.txt меня на главную выкидывает вместо содержимого robots.txt (0.9.5), собственно как и с остальными (кроме php) файлами в корне.
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |
Trustmaster |
|
---|---|
Есть такое дело, и не только в корневой папке. Предлагаю добавить фильтр по расширениям файлов. May the Source be with you!
|
Macik |
|
---|---|
Я так понимаю, что происходит это из за вот этой строки: # 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 |
|
---|---|
При красивых ссылках присутствует и /forum.php и просто /forum, как то можно победить? |