Значит ли это, что при переключении людей с кодированного формата на ASCII сгенерированные слайги не обновляются? Если так, то кажется, что ваш однократный процесс очистки слайгов не сработает в таких случаях.
Здравствуйте,
Внесённые изменения не полностью устранили проблему. Если слаг содержит знак «+», возникает ошибка 400.
Чтобы это подтвердить, я временно переключил генерацию слага обратно на «None», изменил заголовок, удалил знак «+» из заголовка, а затем снова переключил режим на «encoded». После этого ошибка 400 исчезла.
Сценарий следующий: если заголовок содержит знак плюс, возвращается ошибка 400. (Возможно, существуют и другие символы, которые могут вызывать эту проблему; я проверял только знак «+».)
Спасибо.
Это касается слага темы или слага категории?
Слаг темы. На категориях не проверял.
Генератор слаг encoded удаляет все знаки +, поэтому я не понимаю, как у вас это получается:
Только что проверил локально — они удаляются у меня без проблем.
Возможно, на вашем локальном окружении ситуация иная.
Мой сайт на персидском языке. Не могли бы вы переключиться на персидский и затем протестировать?
Чтобы воспроизвести проблему, создайте тему со следующей темой:
گربه های ایرانی + از نژاد خوبی برخوردار هستند
Мой slug превращается в нечитаемый формат и возвращает ошибку 400:
https://domain.ltd/t/%D8%A7%DA%A9%D8%A7%D9%86%D8%AA-%D9%BE%D8%B1%D9%85%DB%8C%D9%88%D9%85-%D9%88%D8%A8-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%85%D9%88%D8%B2-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9-%D8%B4%D8%AE%D8%B5%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A/2067/40
Используется ли вами не символ «og» +, а другой персидский символ, который на него похож? Можете ли вы предоставить строку, воспроизводящую проблему?
Я отредактировал свой предыдущий ответ. Просто для подтверждения: это знак «+».
Это странно, у меня слаг преобразуется в
%DA%AF%D8%B1%D8%A8%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A7%D8%B2-%D9%86%DA%98%D8%A7%D8%AF-%D8%AE%D9%88%D8%A8%DB%8C-%D8%A8%D8%B1%D8%AE%D9%88%D8%B1%D8%AF%D8%A7%D8%B1-%D9%87%D8%B3%D8%AA%D9%86%D8%AF
Вы уверены, что используете последнюю версию и обновили страницу?
Я использую последнюю версию.
Теперь я в замешательстве. Я создал новую тему с теми же условиями, что и тема с повреждённым слагом. Всё работает отлично. Как вы и сказали, скорее всего, проблема не в знаке «+».
Пожалуйста, дайте мне немного времени, чтобы установить тестовую версию и провести несколько испытаний. Я обновлю эту тему дополнительной информацией.
Спасибо
Вы получили этот URL из кнопки «Поделиться»? Происходило двойное кодирование, и я только что исправил это в последнем слиянии.
Посмотрите этот скринкаст.
А, я понял проблему. Это происходит только с слагами длиной более 255 символов и лишь в 66% случаев. Я займусь исправлением завтра.
У нас тоже такое бывает:
Странно, но это происходит только при переходе к теме из списка «Последние». Если же вы ссылаетесь на неё из другой темы, всё работает нормально.
Полная ссылка:
https://rembetiko.gr/t/%CE%B3%CE%BD%CF%89%CE%BC%CE%B7-%CE%B3%CE%B9%CE%B1-%CE%B1%CE%B3%CE%BF%CF%81%CE%B1-%CE%BC%CF%80%CE%BF%CF%85%CE%B6%CE%BF%CF%85%CE%BA%CE%B9%CE%BF%CF%85-%CE%BC%CE%B5%CF%83%CF%89-%CE%B9%CE%BD%CF%84%CE%B5%CF%81%CE%BD%CE%B5%CF%84-%CE%BA%CE%B1%CE%B9-%CE%B5%CE%BA%C/38511/2
То же самое, этот слаг превышает 255 символов.
В ходе расследования я обнаружил несколько категорий, которые вообще не загружаются.
Я заметил, что возникают подобные ошибки:
URIError: URI malformed
at decodeURIComponent (<anonymous>)
at a (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:31208)
at Array.map (<anonymous>)
at o (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:31136)
at P.recognize (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:5729)
at t.applyToState (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:22054)
at u.n.getTransitionByIntent (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:24304)
at u.n.transitionByIntent (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:23609)
at u.n.doTransition (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:25611)
at u.n.transitionTo (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:30132)
TypeError: Cannot read property 'responseJSON' of undefined
at n.error (https://rembetiko.gr/assets/application-5d69c42124908eb6b41549efae9db9b1df26741f3a45075c6bfd603bb5267a42.js:71:604)
at n.C (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:8:17733)
at u.c.triggerEvent (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:8:21275)
at e.t.trigger (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:13392)
at u.c.transitionDidError (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:8:21548)
at https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:17:11836
at f (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:1126)
at T (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:2503)
at E (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:2402)
at y (https://rembetiko.gr/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:18:1896)
Могут ли эти ошибки быть связаны?
(Вы можете проверить это самостоятельно здесь: https://rembetiko.gr/c/άλλα-θέματα/μικρές-αγγελίες)
@Arta_S и @chrispanag, вот ещё два исправления: одно для длинных заголовков, другое для подкатегорий.
и
После обновления мы всё ещё получаем эту ошибку ![]()
В этом случае вам потребуется пересоздать слаг-адреса. Попробуйте выполнить следующие команды:
cd /var/discourse
./launcher enter app
rails c
Topic.update_all(slug: nil)
exit
exit
exit
Два дня назад после последнего обновления у меня возникли две проблемы:
1: Ошибка 400 (Bad Request) в URL некоторых тем
2: Пропала временная шкала в некоторых темах
Хостинг Discourse: «standard-plan»
Можете помочь?
Извините, я плохо владею английским.