Domanda

Ho avuto il piacere di prendere un picco a codice sorgente Wordpress; Mi chiedevo come sono riusciti la funzione URL personalizzato, ma non ho potuto davvero farlo.

Le regole di riscrittura all'interno del file .htaccess wordpress semplicemente reindirizzare tutte le richieste per index.php.

Dopo di che, è per me un mistero: come fanno a fare example.com/this/title/is/cool/ partita index.php?p=233 ?

È stato utile?

Soluzione

Una volta che è reindirizzato a index.php, quel file può guardare $_SERVER['REQUEST_URI'] per determinare ciò che si trova nella parte this/title/is/cool, e poi andare a cercare fino a quale pagina di servire da un database, dal momento che il REQUEST_URI elenca la stringa URI completo, anche se l'URL della pagina effettivo che è stato reindirizzato è solo la prima parte di esso.

Per esempio,

http://www.example.com/foo/bar/

viene riscritto per

http://www.example.com/index.php/foo/bar/

Questo sarà effettivamente portare a http://www.example.com/index.php essere caricato, ma $_SERVER['REQUEST_URI'] avrà il pieno /index.php/foo/bar/ all'interno di esso.

Alcune applicazioni utilizzano un approccio diverso, usano .htaccess di prendere solo i trailing "directory" e metterli nella stringa di query, in modo che la riscrittura diventa qualcosa di simile a questo:

http://www.example.com/index.php?path=/foo/bar/

nel qual caso il percorso fornito è disponibile in _GET['path'].

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