Domanda

Vedo spesso URL (riscritti) senza ID, come in alcune installazioni di WordPress.Qual è il modo migliore per raggiungere questo obiettivo?Esempio:site.com/product/some-product-name/ forse per mantenere la matrice di nomi di pagina e ID nella cache, per evitare la query DB su ogni richiesta di pagina?Come evitare conflitti e quali sono gli altri problemi legati all'utilizzo degli URL senza ID?

È stato utile?

Soluzione

L'uso di un ID presenta in realtà lo stesso enigma: stai solo controllando un valore diverso nel tuo database.Anche la parte "nome prodotto" del tuo URL sopra è qualcosa di unico.Alcuni li chiamano lumache (Wordpress, anche permalink).Quindi, invece di interrogare il database per una riga che ha un ID particolare, stai interrogando il database per una riga che ha uno slug particolare.Non è necessario conoscere l'ID per recuperare il record.

Altri suggerimenti

Finché i nomi dei prodotti sono univoci, non dovrebbe essere un problema.Non ci vorrà più tempo (almeno non significativo) per cercare un prodotto tramite nome univoco rispetto all'ID numerico purché la colonna sia indicizzata.

Wordpress ha un campo nella tabella wp_posts per lo slug.Quando crei il post, viene creato uno slug dal titolo del post (se è così configurato), sostituendo gli spazi con trattini (o penso che tu possa impostarlo su caratteri di sottolineatura).Elimina anche gli apostrofi, le virgole o altro.Credo che limiti anche la lunghezza complessiva della lumaca.

Quindi, in breve, non viene decodificato dinamicamente l'URL nel titolo del post: c'è un campo nella tabella che corrisponde direttamente alla versione URL del nome del post.

Come forse saprai o meno, gli URL verranno riscritti con quelli di Apache mod_rewrite modulo.Come accennato qui, Wordpress sta, in background, assegnando uno slug dopo aver ripulito il titolo o il nome del post.

Ma, per rispondere alla tua domanda, quello che stai descrivendo è la funzione "Pretty Permalinks" di Wordpress e puoi saperne di più nella sezione Codice WordPress.Le versioni più recenti di Wordpress eseguono la riscrittura internamente (nessuna modifica .htaccess, wp_rewrite Invece).Ecco perché vedrai le stesse regole per qualsiasi struttura di permalink.

Tuttavia, se scavi un po' puoi trovare le vecchie regole di riscrittura.Per esempio:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L]

Prenderà un URL come /2008/01/01/ e indirizzarlo a /index.php?year=2008&monthnum=01&day=01 (e caricare una categoria di data).

Ma, come detto, una pagina mi piace product-name esiste soltanto perché Wordpress ha già ripulito il titolo del post e lo ha archiviato come campo nel database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top