Necesito crear un sitio web que tenga artículos, y me gustaría hacer URL amigables para él, por ejemplo, la URL de la página con
Título: Prueba de artículo
debe convertirse en: http://www.example.com/articles/article_test
.
Por supuesto, necesito eliminar algunos caracteres del título como ?
o #
, pero no estoy seguro de cuáles eliminar.
¿Alguien puede decirme qué personajes son seguros de mantener?
url
friendly-url
Paulo
fuente
fuente
Respuestas:
Para citar la sección 2.3 de RFC 3986 :
"Los caracteres que están permitidos en un URI pero que no tienen un propósito reservado se denominan sin reserva. Estos incluyen letras mayúsculas y minúsculas, dígitos decimales, guiones, puntos, guiones bajos y tilde".
Tenga en cuenta que RFC 3986 enumera menos signos de puntuación reservados que el RFC 2396 anterior .
fuente
ç
yõ
?post-title-with-%C3%A7-and-%C3%B5
, pero aún se mostrará en la barra de ubicación del usuario comopost-title-with-ç-and-õ
.Hay dos conjuntos de caracteres que debes tener en cuenta: reservados e inseguros .
Los caracteres reservados son:
Los caracteres generalmente considerados inseguros son:
Puede que haya olvidado uno o más, lo que me lleva a repetir la respuesta de Carl V. A la larga, probablemente sea mejor usar una "lista blanca" de caracteres permitidos y luego codificar la cadena en lugar de tratar de mantenerse al tanto de los caracteres que los servidores y sistemas no permiten.
fuente
#
es un carácter reservado utilizado para marcadores en una página específica, creado al tener un elemento HTML con un atributo de nombre o atributo de identificación (sans#
-symbol).~
no es segura. ¿Estás seguro de que es?Es mejor mantener solo algunos caracteres (lista blanca) en lugar de eliminar ciertos caracteres (lista negra).
Técnicamente, puede permitir cualquier carácter, siempre que lo codifique correctamente. Pero, para responder en el espíritu de la pregunta, solo debe permitir estos caracteres:
Todo lo demás tiene un significado potencialmente especial. Por ejemplo, puede pensar que puede usar +, pero se puede reemplazar con un espacio. & también es peligroso, especialmente si se usan algunas reglas de reescritura.
Al igual que con los otros comentarios, consulte los estándares y especificaciones para obtener detalles completos.
fuente
Siempre seguro
Estos son seguros (en teoría / especificaciones), básicamente en cualquier lugar excepto el nombre de dominio.
Codifique por ciento cualquier cosa que no esté en la lista, y ya está listo.
A veces seguro
Solo seguro cuando se usa dentro de componentes URL específicos; usar con cuidado.
Nunca seguro
De acuerdo con la especificación URI (RFC 3986), todos los demás caracteres deben estar codificados en porcentaje. Esto incluye:
Si le preocupa la compatibilidad máxima, limite el juego de caracteres a AZ az 0-9 - _.
(con puntos solo para extensiones de nombre de archivo).
Mantenga el contexto en mente
Incluso si es válido por especificación, una URL puede ser "insegura", según el contexto. Como un archivo: /// URL que contiene caracteres de nombre de archivo no válidos, o un componente de consulta que contiene "?", "=" Y "&" cuando no se utilizan como delimitadores. El manejo correcto de estos casos generalmente depende de sus scripts y se puede solucionar, pero es algo a tener en cuenta.
fuente
=
no es seguro para consultas. Por ejemplo, FIQL acepta signos de igualdad y se describe a sí mismo como "compatible con URI" y "optimizado y destinado para su uso en el componente de consulta". En mi interpretación, RFC 3986 permite explícitamente "=", "&", "+" y otros en las consultas.params.toString() // "key=730d67"
" (3) PHP Manual, http-build-query: "Generar una cadena de consulta codificada en URL. [...] El ejemplo anterior generará:0=foo&1=bar[...]
"(4) J. Starr, Perishable Press:" Al crear páginas web, a menudo es necesario agregar enlaces que requieren cadenas de consulta parametrizadas ".En cuanto a RFC3986 - Identificador uniforme de recursos (URI): sintaxis genérica , su pregunta gira en torno al componente de ruta de un URI.
Citando la sección 3.3, los caracteres válidos para un URI
segment
son de tipopchar
:Que se descompone en:
O en otras palabras: Usted puede utilizar cualquier carácter (no control-) de la tabla ASCII , excepto
/
,?
,#
,[
y]
.Este entendimiento está respaldado por RFC1738 - Localizadores uniformes de recursos (URL) .
fuente
-
y;
están a salvo, eso es lo que mi respuesta y RFC establecen claramente.sin reservas = ALFA / DÍGITO / "-" / "." / "_" / "~"
fuente
Por el contexto que describe, sospecho que lo que realmente está tratando de hacer es algo llamado 'babosa SEO'. La mejor práctica general conocida para aquellos es:
Entonces, como ejemplo, un artículo titulado "The Usage of! @% $ * To Represent Swearing In Comics" obtendría una babosa de "use-represent-swearing-comics".
fuente
El formato para un URI se define en RFC 3986 . Consulte la sección 3.3 para más detalles.
fuente
Desde una perspectiva de SEO, los guiones son preferibles a los guiones bajos. Convierta a minúsculas, elimine todos los apóstrofes, luego reemplace todas las cadenas de caracteres no alfanuméricas con un solo guión. Recorte el exceso de guiones desde el principio y el final
fuente
Tuve un problema similar, quería tener urls bonitas y llegué a la conclusión de que solo tenía que permitir letras, dígitos, y _ en urls. Eso está bien, luego escribí algunas expresiones agradables y me di cuenta de que reconoce que todos los caracteres UTF8 no son letras en .NET y se atornilló. Esto parece ser un problema conocido para .NET regex engine. Entonces llegué a esta solución:
fuente
Me pareció muy útil codificar mi url en una segura cuando estaba devolviendo un valor a través de ajax / php a una url que luego fue leída por la página nuevamente.
Salida PHP con codificador url para el carácter especial &
¡Espero que alguien encuentre útil mis pequeños extractos de código! :)
fuente
Creo que está buscando algo como "Codificación de URL": codificar una URL para que sea "seguro" usarlo en la web:
Aquí hay una referencia para eso. Si no desea caracteres especiales, simplemente elimine los que requieran codificación URL:
http://www.w3schools.com/TAGS/ref_urlencode.asp
fuente
Entre 3-50 personajes. Puede contener letras minúsculas, números y caracteres especiales: punto (.), Guión (-), guión bajo (_) y a la velocidad (@).
fuente