Nombre de página del servidor de páginas inconmensurable. Matriz superglobal $_SERVER. Requisitos del servidor

Suelen buscar elementos de tipo Número, Cadena u Objeto en una matriz. Naturalmente, la forma más rápida de buscar es mediante elementos del tipo Número; comparar un número, incluso uno muy grande, ocurre muy rápidamente, es mucho más fácil verificar un elemento que comparar cadenas lexigráficamente, pero con los objetos es una historia completamente diferente. . Si estamos buscando exactamente el objeto que agregamos a la matriz, es decir, comparando referencias, esto es tan rápido como comparar números, pero si necesitamos buscar por las propiedades del objeto, entonces esto puede llevar mucho, mucho tiempo. mucho tiempo. En particular casos difíciles, Le aconsejo que componga algún tipo de hash del objeto y cree un mapa de matriz separado, en el que pueda buscar fácilmente todo lo que necesita.

Veamos 6 formas de hacer esto usando JS nativo de diversa novedad y 3 formas de analizarlos usando marcos populares: jQuery, subrayado y lodash.

Primera parte, nativa, en estilo allegro.

Primero, debe analizar las capacidades del idioma nativo y ver qué puede hacer usted mismo.

Búsqueda frontal

Intentemos simplemente revisar los elementos de la matriz hasta encontrar lo que necesitamos. Como siempre, la solución más sencilla es, en promedio, la más rápida.

La función contiene (arr, elem) (para (var i = 0; i< arr.length; i++) { if (arr[i] === elem) { return true; } } return false; }

Funciona en todas partes. Compara estrictamente usando === . Se puede reemplazar fácilmente con == , lo cual es útil cuando los elementos de la matriz son de diferentes tipos, pero puede ralentizar la búsqueda. También se puede modificar añadiendo la posibilidad de empezar a buscar un elemento desde el final. Excelente para buscar números y líneas. Ampliando un poco, podemos agregar la posibilidad de buscar un elemento por nuestra propia condición (esto nos ayudará a buscar por propiedades del objeto o, por ejemplo, el primer elemento que sea mayor que 100500):

La función contiene (arr, pred) (para (var i = 0; i< arr.length; i++) { if (typeof pred == "function" && pred(arr[i], i, arr) || arr[i] === elem) { return true; } } return false; }

matriz.prototipo.indexOf()

Array.prototype.indexOf(searchElement[, fromIndex = 0]) es el viejo método que hace que todos sufran con su -1 en el caso de que no haya ningún elemento.

La función contiene (arr, elem) (retorna arr.indexOf(elem)! = -1;)

Es compatible con todas partes excepto IE.<= 7, но это уже давно забытая шутка. Данный метод выполняет поиск элемента строго от меньшего индекса к большему, применяя при сравнении === . Увы, по свойствам объекта мы так искать не сможем. arr.indexOf(searchElement, fromIndex) принимает два аргумента, первый searchElement - это элемент который ищем, а второй, fromIndex , индекс с которого начнем искать (отрицательный говорит интерпретатору начинать поиск с arr.length + fromIndex индекса). Аккуратней, если вы укажете fromIndex больше длины массива, метод нераздумывая вернёт -1 .

La función contiene (arr, elem, from) ( return arr.indexOf(elem, from) != -1; )

Array.prototipo.lastIndexOf()

Array.prototype.lastIndexOf(searchElement[, fromIndex = arr.length - 1]) - para ser justos, también debemos hablar de ello. Funciona exactamente igual que Array.prototype.indexOf() , pero completamente al revés (la búsqueda se realiza en orden inverso y fromIndex se cuenta inicialmente desde el final). Se reemplazó la construcción ret != -1 con!!~ret por diversión.

La función contiene (arr, elem, de) ( return !! ~arr.lastIndexOf(elem, de); )

matriz.prototipo.find()

Array.prototype.find(callback[, thisArg]) - ES6 moderno, elegante y juvenil, con todo lo que implica:

La función contiene (arr, elem) ( return arr.find((i) => i === elem) != -1; )

Devuelve el elemento o -1 si no se encuentra nada. Busca usando callback(elem, index, arr) , es decir, si esta función devuelve true , entonces este es exactamente el elemento que se está buscando. Por supuesto, puedes configurar esta función tú mismo, por lo que el método es universal.

Array.prototipo.findIndex()

Array.prototype.findIndex(callback[, thisArg]): completamente similar al método anterior, excepto que la función no devuelve un elemento, sino un índice. Por diversión, lo haré con la capacidad de pasar mi función:

La función contiene (arr, pred) ( var f = tipo de pred == "función" ? pred: (i => i === pred); return arr.findIndex(f) != -1; )

matriz.prototipo.incluye()

Array.prototype.includes(searchElement[, fromIndex]) - y este es ES7, con un soporte aún muy básico. ¡Finalmente tendremos un método especial para saber si un elemento está en la matriz! ¡Felicidades!

Arr.includes(elem);

Eso es todo lo que se necesita para encontrar el elemento. Los argumentos para esta función son completamente similares a Array.prototype.indexOf() . Pero devolverá verdadero si tiene éxito y falso en caso contrario. Naturalmente, no se puede buscar por propiedades de objeto; para esto existe Array.prototype.find() . Debería ser el más rápido, pero... Es posible que con el tiempo se convierta en el más rápido.

Segunda parte, con atención, pero ajena y al estilo de una sonata

Ahora, finalmente, podemos hablar del mismo tema, ¡pero en el contexto de un par de marcos! Dicen que siempre es bueno ver lo que hacen los demás antes de empezar a hacerlo tú mismo. ¡Quizás esto nos abra los ojos a algo interesante!

jQuery

jQuery.inArray(valor, matriz [, fromIndex]) - por cierto, bastante método rápido, según las pruebas.

Utiliza igualdad estricta === internamente y devuelve -1 si no encontró nada, y si lo encontró, devolverá su índice. Por conveniencia y uniformidad, envolvámoslo en una función:

La función contiene (arr, elem) (retorna jQuery.inArray(elem, arr)! = -1;)

Ahora hablemos de cómo funciona. Esto es lo que es en la versión 2.1.3:

InArray: función (elem, arr, i) (return arr == null? -1: indexOf.call(arr, elem, i);)

Donde indexOf es esto:

// Utilice un indexOf simplificado ya que es más rápido que el nativo // http://jsperf.com/thor-indexof-vs-for/5 indexOf = function(list, elem) ( var i = 0, len = lista.longitud;para(; yo< len; i++) { if (list[i] === elem) { return i; } } return -1; }

Un comentario divertido dice que esto es más rápido que el Array.prototype.indexOf() nativo (puedo suponer que debido a la falta de todas las comprobaciones) y sugiere mirar las pruebas de rendimiento.

De hecho, este es el primer método de la primera parte.

Subrayar

_.contains(lista, valor): este es el método que nos ofrece una biblioteca popular para trabajar con colecciones. Igual que _.include(list, value) .

Utiliza === para comparar. Devuelve verdadero si la lista contiene el elemento que buscamos. Si la lista es una matriz, se llamará al método indexOf.

Contiene = _.include = function(obj, target) ( if (obj == null) devuelve falso; if (nativeIndexOf && obj.indexOf === NativeIndexOf) devuelve obj.indexOf(target) != -1; devuelve cualquiera( obj, función(valor) ( valor de retorno === objetivo; ));

Donde NativeIndexOf es lo que dice que Array.prototype.indexOf() existe, y obj.indexOf === NativeIndexOf dice que la lista es una matriz. Ahora puede ver por qué este método es más lento que jQuery.inArray(), que es solo una envoltura de Array.prototype.indexOf(). Nada interesante.

Lodash

_.includes(collection, target, ): aquí está la última esperanza de nuevas ideas, de la segunda biblioteca más famosa para trabajar con colecciones. Igual que _.contains() y _.include() .

Devuelve verdadero si lo contiene y falso si no lo contiene. fromIndex índice del elemento desde el que iniciar la búsqueda.

La función incluye (colección, destino, fromIndex, guard) ( var longitud = colección? getLength(colección): 0; if (!isLength(longitud)) ( colección = valores (colección); longitud = colección.longitud; ) if (typeof fromIndex != "número" || (guardia && isIterateeCall(objetivo, fromIndex, guardia))) ( fromIndex = 0; ) else ( fromIndex = fromIndex< 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); } return (typeof collection == "string" || !isArray(collection) && isString(collection)) ? (fromIndex <= length && collection.indexOf(target, fromIndex) >-1) : (!!length && getIndexOf(colección, destino, fromIndex) > -1); )

guardia - argumento de servicio. Primero, se encuentra la longitud de la colección, se selecciona fromIndex y luego... ¡no, no Array.prototype.indexOf()! Para buscar una cadena, usamos String.prototype.indexOf() , y vamos más allá a _.getIndexOf() y como resultado terminamos con la implementación LoDash de indexOf() :

Función indexOf(matriz, valor, fromIndex) ( var longitud = matriz? array.length: 0; if (!length) ( return -1; ) if (typeof fromIndex == "número") ( fromIndex = fromIndex< 0 ? nativeMax(length + fromIndex, 0) : fromIndex; } else if (fromIndex) { var index = binaryIndex(array, value); if (index < length && (value === value ? (value === array) : (array !== array))) { return index; } return -1; } return baseIndexOf(array, value, fromIndex || 0); }

Es interesante porque fromIndex puede tomar valores numéricos y booleanos, y si sigue siendo un valor booleano y es verdadero, entonces la función utilizará una búsqueda binaria a través de la matriz. Fresco. De lo contrario, indexOf() se ejecutará de una forma más sencilla:

Función baseIndexOf(matriz, valor, fromIndex) ( if (valor!== valor) ( ​​return indexOfNaN(matriz, fromIndex); ) var índice = fromIndex - 1, longitud = matriz.longitud; while (++index< length) { if (array === value) { return index; } } return -1; }

Un movimiento interesante para el caso en el que buscamos NaN (permítanme recordarles que, debido a un error molesto, no es igual a sí mismo). Se ejecutará indexOfNaN() y, de hecho, ninguno de todos los métodos descritos anteriormente podría encontrar NaN , excepto aquellos, por supuesto, en los que nosotros mismos podríamos especificar una función para seleccionar elementos.

Se podría sugerir simplemente envolver _.indexOf() para encontrar el elemento:

La función contiene (arr, elem, fromIndex) ( return _.indexOf(arr, elem, fromIndex) != -1; )

Donde fromIndex será el índice desde donde comenzamos a buscar o verdadero si sabemos que arr está ordenado.

Conclusión, aunque al estilo Intermezzo

Y sí, todas estas opciones tienen sentido sólo si el momento de búsqueda de datos es frecuente en su algoritmo o la búsqueda se produce en datos muy grandes. A continuación se muestran algunas pruebas para buscar elementos de tipo Número y Cadena en matrices de 1.000.000 (millones) de elementos de longitud para tres casos en los que el elemento está al principio de la matriz, en el medio (puede considerarse la situación promedio para una paleta). ) y al final (puede considerarse como el elemento faltante del tiempo de búsqueda, excepto el método con Array.prototype.lastIndexOf()).

La codificación de nombres de páginas de MediaWiki es un tema complicado. Las palabras mágicas de MediaWiki PAGENAME, PAGENAMEE y urlencode tienen implementaciones distintas, cada una con sus propias peculiaridades.

El nombre de una página de MediaWiki puede tener un espacio inicial pero no un espacio final. Los caracteres ASCII que no son En los nombres de las páginas de MediaWiki se permiten los tres tipos de corchetes, signo sostenido, guión bajo y barra vertical, y todos los caracteres de control (incluidas tabulaciones y nuevas líneas).

# < > _ { | } Tenga en cuenta que el guión bajo no está realmente prohibido, pero se trata como un espacio sin distinción en los nombres de las páginas de MediaWiki, por lo que "A_B" y "A B" hacen referencia exactamente al mismo nombre de página (las páginas se crearán, buscarán y mostrarán (con sus título) usando espacios, nunca usando guiones bajos).

Este artículo se referirá a estos como "caracteres de nombre de página no permitidos". Para mayor claridad, presentaremos otros valores ASCII de 7 bits para caracteres como la codificación de estilo URL de forma porcentual-hexadecimal conocida como codificación porcentual.

Contenido

NOMBRE DE PÁGINA [editar]

De lo contrario, estos puntos quedan intactos mediante ((urlencode:...)) y ((anchorencode:...)) , pero las barras se pueden convertir.

Además, es posible que la secuencia de dos barras diagonales sucesivas //) no se acepte en los nombres de las páginas, dependiendo de la configuración del wiki. Por lo general, esto es un indicador de que el nombre es una URL, cuando está precedido por un esquema de URI válido (o ningún esquema de URI en absoluto, lo que significa que se utilizará un esquema de URI predeterminado "http:" o "https:", dependiendo de preferencia del usuario). Un esquema de URI debe contener dos puntos (:), pero MediaWiki actualmente reconoce solo esquemas de URI donde los dos puntos son finales, en una lista restringida; de lo contrario.

Por ejemplo, en esta wiki,

"((NOMBRE DE LA PÁGINA|//www.site/))"

"//www.sitio/" .

En los sitios de Wikimedia, como el sitio, las barras dobles se reconocen como URI, y la mayoría de los URI válidos no se permiten como nombres de página (si hay un esquema de URI presente, podría reconocerse como un espacio de nombres si se ha configurado; de lo contrario, la página El nombre caerá en el espacio de nombres principal de la wiki):

  • La creación de un enlace a estos nombres de páginas similares a URI utiliza:
    • [[ nombre de la página en doble paréntesis| con texto mostrado opcional ]] .
  • Pero los enlaces al objetivo efectivo del URI utilizan:
    • [ URL-sin-espacios-en- soltero-soportes con texto mostrado opcional ] , o
    • URI-sin-espacios(También se muestra textualmente, pero el enlace se activará condicionalmente ya que está sujeto a restricciones de esquemas de URI reconocidos).

Entonces, en esta wiki en el sitio, el siguiente código

[]

crea inesperadamente un enlace directo a la URL externa, entre corchetes simples textuales:

Los URI no se reconocen mediante codificación de URL ni codificación de anclaje (¡esto significa que no se pueden crear URL completas válidas de forma segura con urlencode!).

Sigue estos pasos No hay necesidad. Tu red ya está activada. Cuando actualice WordPress a la versión 3.x, se le pedirá que actualice las reglas en su archivo .htaccess para el modo multisitio.

  • 1 Antes de empezar
    • 1.1 Requisitos de administrador
    • 1.2 Requisitos del servidor
    • 1.3
  • 2
  • 3
  • 4
  • 5 Paso 4: Instalación de red
  • 6 Paso 5: Activación de la red
  • 7 Paso 6: Gestión de la red
  • 8 Lo que necesitas saber
    • 8.1 Enlaces permanentes
    • 8.2 Complementos de WordPress
    • 8.3 Categorías y etiquetas
    • 8.4 Cambiar entre subdominios y subdirectorios
    • 8.5 .htaccess y reescritura de mod

Antes de comenzar

Requisitos de administrador

Si desea iniciar una red de blogs, debe tener conocimientos de los conceptos básicos de la administración de UNIX/Linux. También se recomiendan conocimientos básicos de WordPress, PHP, HTML y CSS.
Crear y mantener una red es más difícil que un sitio web normal. Esta página le ayudará a comprender si realmente necesita una red y qué puede encontrar al crear una. Si las instrucciones de esta página le parecen confusas, pruebe primero en su sitio local sin afectar su sitio principal.

Requisitos del servidor

Desde esta función requiere configuración del servidor y algunas habilidades técnicas, debe consultar con su proveedor de alojamiento sobre la compatibilidad con esta función. No se recomienda ejecutarlo en alojamiento compartido.
En el Paso 4: Configuración de la red, puede seleccionar el modo de subdominio o subdirectorio. Esto significa que cada sitio nuevo en su red se creará como un subdominio o subdirectorio virtual.
  • Subdominios
  • Subdirectorios
Además, en una etapa posterior, puede utilizar el complemento WordPress MU Domain Mapping para asignar sus propios nombres de dominio a sitios individuales.
Sitios en subdirectorios usados extensión mod_rewrite en el servidor con la capacidad de procesar el archivo .htaccess en el que se creará la estructura del enlace. Si ya utiliza enlaces permanentes "hermosos" en su blog, los sitios en subdirectorios funcionarán. Sitios en subdominios usados

máscara para subdominios

  • . Es necesario habilitar su uso en Apache, y también agregar una máscara a los registros DNS. (Consulte el paso 2 para obtener más detalles). Algunos proveedores de alojamiento ya permiten el uso de una máscara, en cuyo caso lo único que queda por hacer es agregar una entrada DNS.
  • Es posible que los planes de alojamiento compartido no tengan esta función, así que consulte con su proveedor de alojamiento antes de habilitar esta función. Requisitos de configuración de WordPress
  • Dirección de WordPress (URL)" y "Dirección del sitio (URL)" son diferentes. La "Dirección de WordPress (URL)" utiliza un número de puerto distinto de ":80" y ":443". Requisitos de configuración de WordPress
    • Seleccionar modo
    • subdominios
    • esta prohibido
  • Dirección de WordPress WordPress se instala en un subdirectorio (en lugar del directorio raíz). La "Dirección de WordPress (URL)" utiliza un número de puerto distinto de ":80" y ":443". Requisitos de configuración de WordPress
    • Si su sitio ha estado en línea durante más de un mes, debido a problemas con los enlaces permanentes existentes. (Este defecto será corregido en uno de los próximas versiones. Consulte también "Cambiar entre subdominios y subdirectorios".)
(Ver archivo para más detalles).

Paso 1: crea una copia de seguridad de WordPress

Cuando se crea la red, WordPress se actualizará. Por favor haga una copia de seguridad de su base de datos y archivos.

Paso 2: configurar una máscara para subdominios

(Si elige el modo de subdirectorio, omita este paso).
Sitios en subdominios trabajar usando una máscara para subdominios. El proceso consta de dos pasos:
  1. Necesita configurar la compatibilidad con máscaras en Apache.
    1. Abra el archivo httpd.conf o incluya el archivo que contiene el registro VHOST de su sitio.
    2. Agregue la siguiente línea: ServerAlias ​​​​*.example.com
  2. En los registros DNS de su servidor, agregue un subdominio con una máscara que apunte al dominio principal. Se parece a esto: A *.example.com
Si su servidor utiliza el panel Plesk. En comparación con un servidor que usa cPanel (o ningún panel de control), configurar una máscara de subdominio en un servidor que usa el panel Plesk contiene algunas diferencias. Todo pasos necesarios se describen en el artículo “Configuración de subdominios comodín para sitios múltiples en el Panel de control de Plesk”. Aunque las instrucciones son bastante detalladas, el proceso sólo lleva unos minutos.
Enlaces externos:
  • Registro DNS comodín (Wikipedia)
  • Servidor virtual Apache (Apache Servidor HTTP documentación)

Paso 3: habilite el modo multisitio

Para que aparezca el elemento del menú Red, debe definir la constante del modo Multisitio en el archivo wp-config.php.
Abra wp-config.php y agregue antes comentario /* Eso es todo, no hay más ediciones. ¡Buena suerte! */ siguiente línea:
define("WP_ALLOW_MULTISITE", verdadero);

Paso 4: Instalación de red

Ahora debería tener una opción "Red" en el menú "Herramientas". Ir a la página. Consulte también la sección Antes de comenzar.
  • Subdominios- ejemplo: sitio1.ejemplo.com y sitio2.ejemplo.com
  • Subdirectorios- ejemplo: ejemplo.com/sitio1 y ejemplo.com/sitio2
Configuración de red Estos valores se completan automáticamente.
Dirección del servidor La dirección de Internet de su red será ejemplo.com.
Nombre de la red ¿Cómo desea nombrar su red?

Correo electrónico del administrador Su dirección de correo electrónico. Asegúrese de que todos los valores estén ingresados ​​correctamente, luego haga clic en Instalar.
El script de instalación intentó abrir una dirección aleatoria (13cc09.example.com) en su dominio.
Para usar el modo de subdominio, debe usar una máscara en sus registros DNS. EN caso general Todo lo que necesitas hacer es agregar un registro con la dirección * usando la herramienta de configuración DNS, apuntando a tu servidor. disponible para grabar. Usando los comandos CHOWN y CHMOD, debe configurar los mismos parámetros que el directorio wp-content. 2. Añade las líneas que te dará WordPress al archivo wp-config.php.

Estas cadenas se crean dinámicamente según la configuración de su red.

Abra el archivo wp-config.php mientras aún está conectado al panel de control de su sitio. [editar]

Agregue las líneas generadas inmediatamente

antes Dependiendo del espacio de nombres y la configuración, una barra diagonal en el nombre de la página proporciona una funcionalidad especial; consulte la función de subpágina. Prefijos de espacio de nombres Además, es posible que la primera parte del nombre de una página no coincida con un prefijo de espacio de nombres independiente del proyecto que se convierte automáticamente en otro. Por ejemplo, el nombre Proyecto: A-Kon en Wikipedia no es posible. La primera parte del nombre de una página puede coincidir con un prefijo de espacio de nombres que no se convierte. Por ejemplo, puede haber artículos en la Wikipedia en inglés sobre libros llamados Wikipedia: la gran aventura y

Charla: Los secretos son malos[editar]

(pero sólo sin el espacio

después del

colon). Sin embargo, en ese caso las páginas están en el espacio de nombres incorrecto. Esto puede resultar inconveniente al buscar o mostrar una lista de páginas. Además, en el segundo caso no hay ningún enlace a una página de discusión sobre el libro. (Como se explicó anteriormente, el nombre de la segunda página no es posible, por ejemplo, en la Wikipedia alemana: consulte w:de:Talk: Los secretos son malos).

Prefijos que hacen referencia a otros proyectos o pseudoespacios de nombres [editar]

La longitud máxima del nombre de la página es de 255 bytes (excluido el prefijo del espacio de nombres). Tenga en cuenta que los caracteres que no son ASCII pueden ocupar hasta cuatro bytes en la codificación UTF-8, por lo que el número total de personajes puede caber en un título puede ser menos de 255 dependiendo del idioma en el que esté.

Espacios vs. guiones bajos [editar]

En nombres de pagina, un espacio en blanco equivale a un guión bajo. Se muestra un espacio en blanco en el título de fuente grande en la parte superior de la página, las URL muestran un guión bajo. Véase también a continuación.

Sensibilidad a mayúsculas y minúsculas [editar]

Actualmente, el primer carácter del nombre de la página es mayúsculas y minúsculas. en sensible, excepto en los siguientes Wikcionarios:

Caso en el que el primer carácter no distingue entre mayúsculas y minúsculas

La forma canónica es con mayúscula.

Tenga en cuenta que en el caso de un prefijo que no es un espacio de nombres para el software, y en el caso de un segundo prefijo, la distinción entre mayúsculas y minúsculas no se aplica al primer carácter después de este prefijo, p. Se distinguen Plantilla:H:enlace Interwiki y Plantilla:H:enlace interwiki.

Distinción entre mayúsculas y minúsculas de la extensión del nombre de archivo de una imagen[editar]

Tenga en cuenta que incluso la extensión del nombre de archivo de una imagen distingue entre mayúsculas y minúsculas: compare image:Stop_sign_us.jpg e image:Stop_sign_us.JPG 748410449856

Espacios/guiones bajos ignorados [editar]

Espacios/guiones bajos que se ignoran:

  • aquellos al principio y al final de un nombre de página completo
  • aquellos en el fin de un prefijo de espacio de nombres, antes de los dos puntos
  • aquellos después de los dos puntos del prefijo del espacio de nombres
  • duplicar espacios consecutivos

Algunos aparecen en la etiqueta del enlace, p. [[___help__ :_ _template_ _]] se convierte en ___help__ :_ _template_ _ , enlazando a Help:Template .

Sin embargo, un espacio antes o después de dos puntos "normales" marca la diferencia, p.

y la Guía del usuario de MediaWiki: descripción general de la edición y la Guía del usuario de MediaWiki: descripción general de la edición se distinguen porque la "Guía del usuario de MediaWiki:" es un pseudoespacio de nombres, no uno real. [editar]

Codificación de caracteres

El nombre de una página no puede contener, p.e. %41, porque se convierte automáticamente al carácter A, para el cual %41 es el código. [[%41]] se representa como . De manera similar, %C3%80 se convierte automáticamente al carácter À. [[%C3%80]] se representa como . La URL de la página es http://meta.wikipedia.org/wiki/%C3%80. Se puede discutir cuál es el nombre real de la página, %C3%80 o À (un usuario dirá este último), pero de todos modos no puede haber páginas distintas con estos nombres. [editar]

La etiqueta de inclusión para una página no existente muestra un enlace con la forma canónica del nombre de la página: ((qwsazx)), ((:qwsazx)), ((project:qws azx)) proporcione Plantilla:Qwsazx, Qwsazx, Wikiquote :Qwsazx; comparar con enlaces ordinarios Plantilla:qwsazx, qwsazx, proyecto:qws azx; Estos funcionan como enlaces canalizados, p. []; en este caso, la conversión aparece en la página de referencia solo cuando se apunta a ella: en la ventana emergente y en la barra de estado (si corresponde al navegador); No se muestra en absoluto si el objetivo es una redirección y cuál es el objetivo final.

Un intento de incluir una página de otro proyecto da como resultado que solo se muestre el wikitexto, p. Plantilla:Qwsazx; Los enlaces interwiki ordinarios no muestran existencia y no muestran una forma canónica en el cuadro flotante o en la barra de estado: en:project:qwsazx. Lo mismo se aplica si se utiliza el estilo de enlace interwiki para un enlace a una página en el mismo proyecto: m:project:qwsazx.

Una página de redireccionamiento guardada muestra la forma canónica del destino, aunque la vista previa muestra el enlace de la forma habitual, en comparación con la vista previa de .

Orden alfabético [editar]

Así tenemos la siguiente lista parcial que muestra el orden:

!"#$%&"()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"
abcdefghijklmnopqrstuvwxyz(|)~
¡¢£¤¥¦§¨©ª«­®¯°±²³´µ ¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋ
ŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűųŴŵŶŷŸŹźŻżŽžſ
ǺǻǼǽǾǿ΄΅Ά·ΈΉΊΌΎΏΐ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰ
αβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ

Tenga en cuenta en particular que "Z" va antes de "a" y "z" antes de "é". El espacio en blanco dentro del nombre de una página se trata como un guión bajo y, por lo tanto, aparece después de las mayúsculas y antes de las minúsculas. Sin embargo, un "espacio en blanco" después del nombre aparece antes de cualquier carácter. A veces, un carácter especial parece una letra normal, pero de todos modos tiene un código especial.

Así tenemos el orden PC, PCX, PC Bruno, PCjr, Κύρια Σελίδα.

Variables NOMBRE DE PÁGINA y NOMBRE DE PÁGINA[editar]

Dentro de localurl, se debe usar ((PAGENAME)) en la primera parte (porque se convierte mediante localurl), o ((PAGENAMEE)) en la segunda parte:

  • ((SERVIDOR))((localurl:Special:Allpages|namespace=12&from=((PAGENAMEE)))) proporciona aquí:

//site/w/index.php?title=Especial:Todas las páginas&namespace=12&from=Page_name

  • ((SERVIDOR))((localurl:Special:Allpages/((PAGENAME))|namespace=12)) proporciona aquí:

//site/w/index.php?title=Especial:Todas las páginas/nombre_página&namespace=12

  • ((SERVIDOR))((localurl:Special:Allpages|namespace=12&from=((PAGENAME)))) proporciona aquí:

//site/w/index.php?title=Special:Allpages&namespace=12&from=Nombre de la página (enlace incorrecto)

  • ((SERVIDOR))((localurl:Special:Allpages/((PAGENAMEE))|namespace=12)) proporciona aquí:

//en.wikiquote.org/w/index.php?title=Special:Allpages/Page_name&namespace=12 (funciona aquí, el guión bajo, convertido desde un espacio, no se ve afectado por la segunda conversión, pero no funciona con caracteres especiales personajes).

Flexor 5

Actualizado:

Al instalar la estructura. enlaces permanentes en la forma "/%categoría%/%nombrepostal%.html"todos los enlaces a publicaciones comienzan a terminar con " .html"Sin embargo, este formato de enlace no afecta a los enlaces de las páginas de ninguna manera. Lo que es un poco molesto es que con una estructura de enlaces de este tipo enfatizamos qué es una página en nuestro sitio y qué no. Una página es con qué " .html" al final, y todo lo demás son categorías, etiquetas o alguna otra taxonomía. Los enlaces a páginas en este contexto se destacan del panorama general: parecen enlaces a categorías, aunque no lo es. El complemento corrige este desagradable situación añadiendo enlaces a páginas que terminan en " .html".

1 Desempaquete el archivo.

2 Copie el archivo a la carpeta /wp-content/complementos/.

3 Vaya al panel de administración del blog en la "pestaña" Complementos" y active el complemento.

No hay configuraciones en el complemento e inmediatamente después de su activación comienza a funcionar. Ahora todos los enlaces a páginas cambiarán de esto:

Aquí están:

Pero, ¿y si necesitas cambiar? .html"en" .htm"o incluso en" .php"? No hay ninguna configuración en el complemento, por lo que tendrá que editarlo manualmente. Para hacer esto, abra el archivo del complemento y cambie las siguientes líneas en él:

13 $wp_rewrite ->

$wp_rewrite->

18 $wp_rewrite -> page_structure = "%pagename%.html";

$wp_rewrite->page_structure="%pagename%.html";

En lugar de " .html"escriba el final que necesita. Después de esto, deberá desactivar y reactivar el complemento. Inmediatamente después de reactivar el complemento, todos los enlaces a sus páginas contendrán el final que escribió en el archivo del complemento.

yo llevé este complemento a la sección " SEO", pero formalmente, por supuesto, no tiene nada que ver con esta sección. Francamente, a los motores de búsqueda no les importa cómo se ven los enlaces a sus publicaciones, páginas o secciones. Y, en general, a su visitantes tampoco. Pero desde el punto de vista de la estética de los enlaces, este complemento es necesario. Después de todo, cambió la estructura del enlace permanente por una más hermosa, aunque esto no tiene ningún sentido desde el punto de vista de la optimización SEO. el blog.




Arriba