Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
naEska
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 26
1

Редирект только если код 200

13.01.2017, 06:32. Просмотров 555. Ответов 8
Метки нет (Все метки)

Здравствуйте.
SEOшник поставил задачу сделать на сайте редирект с адресов без слеша на адреса со слешем. Плюс редирект с www на без www.
Все это сделал через .htaccess:

RewriteCond %{HTTP_HOST} ^www\.kedrprom\.ru
RewriteRule ^(.*)$ http://kedrprom.ru/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

Теперь делаю страницу 404. И тут возникла проблема. SEOшник просит сделать так, чтобы редирект при не найденной странице не происходил, а сразу отображалась страница 404. Но у меня сначала сервер производит редирект, а уже потом битрикс выводит 404-ю страницу. Подскажите, как можно настроить сервер, чтобы он делал редиректы только если все нормально (код 200), а в остальных случаях показывал страницу 404.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2017, 06:32
Ответы с готовыми решениями:

Отдает код ответа 200 вместо 404
Не могу понять логику работы, что не так с Битриксом. Битрикс не отдает 404...

Выводить свойство элемента (тип файл) только если заполнен
Доброго времени суток! Есть необходимость выводить блок в news.list только...

Нужно ли ставить SMC на сайт, если мне нужен только форум
Добрый день! Хочу сделать форум небольшой посещаемости (максимум, 100...

Найти минимальный четный элемент целочисленного массива, если известно, что значение элементов массива лежат в диапазоне от -200 до +200
Найти минимальный четный элемент целочисленного массива, если известно, что...

Выполнит код, только если ComboBox не пуст
Доброго дня,я бы хотела узнать как сделать несколько пользователей в программу...

8
voral
918 / 615 / 135
Регистрация: 16.03.2008
Сообщений: 2,923
13.01.2017, 10:00 2
Сервер ни как.
Только если убирать все редиректы из htaccess и осуществлять уже в php... На мой взгляд не очень удачный путь, т.к. для всех случаев редиректа увеличится время отдачи страницы. Кроме того придется разруливать ситуации, для примера:
1. Вбиваем адрес your.site/ctatalog/testtest (по идее должен быть слеш в конце)
2. И тут мы должны принять решение выдать 404 или слеш. Для чего мы должны найти раздел или элемент с кодом testtest. и осуществить либо редирект ибо выдать 404
3. После редиректа опять запрашивем данные.

В итоге на один хит два раза лезем в базу. При этом это только в простом случае анализа на 404 ошибку.. Да и лишний раз запуск интерпретатора PHP, отработка начальных битрикс скриптов.... Не говоря о том, что это лишняя возможность насоздавать багов.

Добавлено через 4 минуты
А еще есть, например, ЧПУ умного фиьтра...... Тут вообще придется для проверки тяжелый компонент умного фильтра подключать
1
naEska
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 26
13.01.2017, 11:06  [ТС] 3
Дал прочитать Ваш пост сеошнику - вот что он ответил:
Реализовывается без особых нагрузок как технически, так и визуально (по ощущениям, для пользователя). Как - не знаю. Примеры:
https://refloor-nsk.ru/catalog/pvkh_plitka/ - исходный урл (Битрикс)
https://refloor-nsk.ru/catalog/pvkh_plitka - 301 редирект
https://refloor-nsk.ru/catalog/pvkh_plitk - 404 ошибка
0
voral
918 / 615 / 135
Регистрация: 16.03.2008
Сообщений: 2,923
13.01.2017, 11:15 4
Что ж. Делайте....
Сделать то не проблема. И задержка не будет на час. Просто надо понимать что здесь доля секунды, там доля... И вот ваша страница уже две секунды тратит до отображения. Ведь вам проверять урл (минимально или углубленно) надо на каждом хите.

Только делать надо полноценно.Пример

https://refloor-nsk.ru/catalog/pvkh_...-is-zamkovaya/ - все ок
https://refloor-nsk.ru/catalog/pvkh_...i-is-zamkovaya -404 хотя нужен просто слеш

а вот дубликат первой ссылки
https://refloor-nsk.ru/catalog/pvkh_...fignya-is-big/ (или у вас есть свойство fignya ?
0
voral
918 / 615 / 135
Регистрация: 16.03.2008
Сообщений: 2,923
13.01.2017, 11:19 5
https://refloor-nsk.ru/catalog
0
Миниатюры
Редирект только если код 200  
voral
918 / 615 / 135
Регистрация: 16.03.2008
Сообщений: 2,923
13.01.2017, 11:20 6
А теперь введите http://www.refloor-nsk.ru/catalog и считайте редиректы
0
naEska
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 26
13.01.2017, 11:22  [ТС] 7
Спасибо.
Я просто хочу убедить сеошника, что это все не стоит того. Вы очень помогаете.
0
voral
918 / 615 / 135
Регистрация: 16.03.2008
Сообщений: 2,923
13.01.2017, 12:06 8
Да тут просто надо технологию пояснить:
1. Редиректы осуществляемые apache и nginx осуществляются до запуска любых php скриптов. И сервера в этот момент не знают ни чего о ситуациях в битриксе (т.е. определить код ответа не возможно). Т.е. редиректы при помощи сервера сразу отметаем. Самый максимум, что на них можно возложить: если не https или есть www в начале или нет слеша в конце. Весь запрос переадресовать на некий скрипт, который будет разбираться делать сразу 404 или редирект на правильный урл.

И вся загвоздка в этом скрипте. В любом случае скрипт должен исправить URL. А дальше варианта два:
1. Сам попытаться определит: наличие каталога в файловой структуре, наличие элемента или раздела инфобока, учесть все что прописано в urlrewrite.php, учесть умный фиьтр и т.д и т.п. и дальнейшая разработка должна осуществляться с учетом этого скрипта... Т.е. например через год возникает некая задаче, по какомуто условию (утрировано но для наглядности) в footer.php отдавать 404... Все этот ваш скрипт сам эту ситуацию не отследит - его надо дорабатывать...
2. Вариант самый надежный по гарантированному определению 404 ошибки... Просто curl лезет на этот же сайт и получает результат. Надежно: да. Но, по факту, страница генерируется два раза на этом хите. Если это каталог с фильтром?
0
tgarl
357 / 351 / 81
Регистрация: 15.02.2012
Сообщений: 1,352
17.01.2017, 10:12 9
Зачем все так усложнять - редиректы оставить как есть, пусть сервер этим занимается, а насчет 404 использовать событие вывода буфера OnEpilog в нем определять выставлено на странице каким либо компонентом 404/существет ли запрошенный файл или нет и если все плохо подгружать 404. примеры такого подхода для битрикса можно в сети поискать. только нужно чтобы компоненты правильно настроены были.
0
17.01.2017, 10:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2017, 10:12

Код работает только если запущен из среды или отладчика
Причина №1: Я вылавливаю параметры командной строки таким кодом: invoke...

Как можно изменить код программы, если имеем только exe файл?
Вот, допустим, имеем exe файл с таким кодом begin var a,b,c:integer; a:=200;...

Можно ли узнать исходной код Delphi, если есть только ехе-файл?
можно узнать исходной код delphi. если есть только ехе файл? может есть какая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru