Мне нужно сделать сайт, на котором будут статьи, и я хотел бы сделать для него понятные URL-адреса, например URL-адрес страницы с
Название: Статья Тест
должны стать: http://www.example.com/articles/article_test
.
Конечно, мне нужно удалить некоторые символы из названия, например ?
или #
, но я не уверен, какие из них удалить.
Может кто-нибудь сказать мне, какие символы безопасно хранить?
url
friendly-url
Пауло
источник
источник
Ответы:
Процитируем раздел 2.3 RFC 3986 :
«Символы, которые разрешены в URI, но не имеют зарезервированной цели, называются незарезервированными. Они включают в себя прописные и строчные буквы, десятичные цифры, дефис, точку, подчеркивание и тильду».
Обратите внимание, что в RFC 3986 указано меньше зарезервированных знаков препинания, чем в более раннем RFC 2396 .
источник
ç
иõ
?post-title-with-%C3%A7-and-%C3%B5
, но она все равно будет отображаться в строке адреса пользователя какpost-title-with-ç-and-õ
.Есть два набора символов, за которыми нужно следить: зарезервированный и небезопасный .
В зарезервированные символы:
Знаки, которые обычно считаются небезопасными :
Возможно, я забыл один или несколько, что приводит меня к повторению ответа Карла V. В долгосрочной перспективе вам, вероятно, лучше использовать «белый список» разрешенных символов и затем кодировать строку, а не пытаться идти в ногу с символами, которые запрещены серверами и системами.
источник
#
является зарезервированным символом, используемым для закладок на определенной странице, созданный с помощью одного HTML-элемента с соответствующим атрибутом name или id (sans#
-symbol).~
небезопасна. Вы уверены, что это так?Лучше всего хранить только некоторые символы (белый список) вместо удаления определенных символов (черный список).
Технически вы можете разрешить любой символ, если вы правильно его закодировали. Но, чтобы ответить в духе вопроса, вам следует разрешить только следующие символы:
Все остальное имеет потенциально особое значение. Например, вы можете подумать, что можете использовать +, но его можно заменить пробелом. & также опасен, особенно если использовать некоторые правила перезаписи.
Как и в случае с другими комментариями, ознакомьтесь со стандартами и спецификациями для получения полной информации.
источник
Всегда безопасно
Они безопасны (в теории / спецификации), в основном везде, кроме доменного имени.
Процентное кодирование ничего не указано, и вы готовы.
Иногда безопасно
Безопасно только при использовании в определенных компонентах URL; используйте с осторожностью.
Никогда не безопасно
Согласно спецификации URI (RFC 3986) все остальные символы должны быть в процентах. Это включает:
Если важна максимальная совместимость, ограничьте кодировку AZ az 0-9 - _.
(с периодами только для расширений файлов).
Держите контекст в уме
Даже если он действителен для каждой спецификации, URL-адрес может быть «небезопасным», в зависимости от контекста. Например, file: /// URL-адрес, содержащий недопустимые символы имени файла, или компонент запроса, содержащий «?», «=» И «&», если они не используются в качестве разделителей. Правильная обработка этих случаев, как правило, зависит от ваших сценариев и может быть обойдена, но об этом нужно помнить.
источник
=
это небезопасно для запросов. Например, FIQL принимает знаки равенства и описывает себя как «дружественный к URI» и «оптимизированный и предназначенный для использования в компоненте запроса». В моей интерпретации RFC 3986 явно разрешает "=", "&", "+" и другие в запросах.params.toString() // "key=730d67"
» (3) PHP Manual, http-build-query: «Создать строку запроса в кодировке URL. [...] Приведенный выше пример выведет:0=foo&1=bar[...]
(4) Дж. Старр, Perishable Press: «При создании веб-страниц часто необходимо добавлять ссылки, которые требуют параметризованных строк запроса».Рассматривая RFC3986 - Унифицированный идентификатор ресурса (URI): общий синтаксис , ваш вопрос вращается вокруг компонента пути URI.
Ссылаясь на раздел 3.3, допустимые символы для URI
segment
имеют типpchar
:Который распадается на:
Или другими словами: Вы можете использовать любую (не управления-) символ из таблицы ASCII , за исключением
/
,?
,#
,[
и]
.Это понимание поддерживается RFC1738 - Унифицированные указатели ресурсов (URL) .
источник
-
и;
безопасно, это то, что мой ответ и RFC ясно заявляет.незарезервировано = ALPHA / DIGIT / "-" / "." / "_" / "~"
источник
Из контекста, который вы описываете, я подозреваю, что то, что вы на самом деле пытаетесь создать, называется «SEO-слаг». Лучшая общеизвестная практика для них:
Так, в качестве примера, статья под названием «Использование! @% $ * Для представления ругательства в комиксах» получит фрагмент «Использование-представлять-ругаться-комиксы».
источник
Формат для URI определен в RFC 3986 . Смотрите раздел 3.3 для деталей.
источник
С точки зрения SEO, дефисы предпочтительнее подчеркивания. Преобразовать в нижний регистр, удалить все апострофы, затем заменить все не буквенно-цифровые строки символов одним дефисом. Обрежьте лишние дефисы от начала и до конца.
источник
У меня была похожая проблема, я хотел иметь красивые URL-адреса и пришел к выводу, что я должен разрешать только буквы, цифры и _ в URL-адресах. Это нормально, затем я написал несколько хороших регулярных выражений и понял, что он распознает все символы UTF8 не буквы в .NET и был испорчен. Кажется, это известная проблема для .NET regex engine. Итак, я получил это решение:
источник
Я нашел очень полезным кодировать мой URL-адрес в безопасный, когда я возвращал значение через ajax / php в URL-адрес, который затем снова читался страницей.
Вывод PHP с кодировщиком URL для специального символа &
Надеюсь, кто-нибудь найдет мои маленькие фрагменты кода полезными! :)
источник
Я думаю, что вы ищете что-то вроде «URL Encoding» - кодирование URL, чтобы его можно было «безопасно» использовать в Интернете:
Вот ссылка для этого. Если вам не нужны специальные символы, просто удалите все, которые требуют кодировки URL:
http://www.w3schools.com/TAGS/ref_urlencode.asp
источник
От 3 до 50 символов. Может содержать строчные буквы, цифры и специальные символы - точка (.), Тире (-), подчеркивание (_) и скорость (@).
источник