Я использую joomla 3.4, и я установил компонент sh404 для sef-ссылок. Моя база данных - utf8_general_ci, и многие из моих URL-адресов кодируются url из греческого языка, что приводит к некоторым действительно длинным URL-адресам.Увеличьте длину VARCHAR или обработайте проблему с помощью php?
Сегодня я заметил, что некоторые URL-адреса были сломаны, поэтому после изучения я понял, что sh404 хранит URL-адреса в столбцах VARCHAR (255). Из-за этого некоторые URL-адреса (не многие, но достаточно для того, чтобы заметить из 200-килобайтных URL-адресов) длиннее того, что позволяет и хранится в столбце неполным. Помимо очевидной проблемы сломанных URL-адресов и ожидаемых 500 ошибок сервера и т. Д., Это приводит к тому, что один и тот же сломанный URL-адрес будет храниться повторно, так как sh404 выглядит, если он хранится перед его хранением и не находит его (как сохраненный сломан). В одном случае у меня был тот же самый url, хранящийся более 5000 раз ...
Теперь мой вопрос к вам в этом. Должен ли я просто увеличить длину VARCHAR до 500 (должно быть достаточно, чтобы держать любой URL, даже самые крайние случаи и с 40 до 50), или я должен изменить логику используемого компонента, который генерирует эти URL, путем транслитерации их, тем самым уменьшая размер ВСЕХ моих URL до более чем половины? Недостатком этого является то, что мне все равно придется выводить всю необходимую информацию на греческом языке, и для этого мне придется выполнить много str_replaces с php.
Мои URL-адреса генерируются комбинацией некоторых полей db, содержащих информацию о продукте на греческом языке. Sh404 подбирает греческие URL-адреса и транслитерирует их на английский, но исходный url становится слишком длинным. Если я изменил все поля, содержащие одну и ту же информацию, уже транслитерированную, тогда sh404 будет хранить URL-адреса уже на английском языке, но поля db также будут на английском языке, таким образом, str_replaces. Хорошо, что эти значения известны и исправлены, поэтому мне не нужны никакие preg_replaces.
Как вы думаете, лучше ли качество?
Ofcourse изменения VARCHAR 500 является намного более простым, но я не забочусь принимая долгий путь, если он собирается принести пользу моего выступления
Он транслитерирует или использует punycode? – Elin