Come può un URL del tipo http: lavoro //localhost/index.php/articles/edit/1/my-first-article senza un .htaccess?

StackOverflow https://stackoverflow.com/questions/966916

Domanda

Non capisco questo:

http: //localhost/index.php/articles/edit / 1 / my-prima-articolo

Questo URL è citato come un esempio nel Kohana documentazione quadro . Ho curiosato negli archivi della mia installazione, e non c'è .htaccess oltre la mia uno che non ha nulla a che fare con questo.

Quindi, come può essere che un index.php si chiama ma poi, come parametri, la roba sembra directory aggiunto all'URL? Non sembra "reale".

O è solo il modo nativo PHP / stuff / HTTP Apache funziona davvero? Da quanto ho capito, / è sempre dicendo "hey, una directory!". Rende davvero a zero senso per me ... come è possibile? O hanno qualche parte un .htaccess che io proprio non riesco a vedere / trovare?

È stato utile?

Soluzione

In PHP è possibile ottenere i dati dopo il nome del file con la $_SERVER["PATH_INFO"] variabile. Questo consente di ottenere in pratica le informazioni senza dover utilizzare GET variabili, il che significa che Google e co penserà che si sta utilizzando le pagine statiche. Questo è fondamentalmente in alternativa al mod_rewrite che spesso viene abilitato mentre mod_rewrite è più spesso non è attivato.

Questo può essere evidente a voi, ma non è stato subito a me, questo non funziona correttamente sulle pagine di indice a meno che non si utilizza il nome del file. Per esempio, http://example.com/test/my/get/params non funziona, mentre http://example.com/test/index.php/my/get/params volontà.

Altri suggerimenti

Apache docs :

  

direttiva AcceptPathInfo

     

Questa direttiva controlla se   le richieste che contengono finale   Informazioni percorso che segue un   (O file inesistente nome del file attuale   in una directory esistente) sarà   accettata o respinta. il trailing   Informazioni percorso può essere fatta   a disposizione script nella PATH_INFO   variabile d'ambiente.

     

Per esempio, assumere la posizione   / test / punta a una directory che   contiene solo il singolo file   here.html. Poi le richieste di   /test/here.html/more e   /test/nothere.html/more sia raccogliere   / Più come PATH_INFO.

Quindi presumo questa impostazione è attivata da qualche parte come in httpd.conf. Si noti che questo, come mod_rewrite, può essere attivata / configurato in un certo numero di posti - vedi qui .

AcceptPathInfo è attivata per il server. :)

Non sto usando Kohana, quindi non so se il mio metodo sarà di alcuna utilità, ma quando un server non supporta i file .htaccess (o riscrivere le regole) il mio 'quadro' genera URI di simile a questo:

http://www.domain.com/? / articoli / modificare / 1 / my-prima-articolo (si noti il?)

E 'un metodo simile a quello utilizzato dal framework Rana, basta analizzare $_SERVER['REQUEST_URI'] (o $_SERVER['HTTP-X-REWRITE-URL'] su server Windows) ed esplodere sul '/'.

Questo metodo è completamente riscrivere indipendente e genera ancora più o meno SEO friendly URI

La speranza è di alcuna utilità per voi.

Probabilmente non è il caso qui, e certamente non è raccomandato, e probabilmente non è la risposta giusta ...

MA ...

Ho visto la gente usa 404 pagine per analizzare la richiesta e quindi includono giusta pagina con queste informazioni.

Vedere PATH_INFO in variabili CGI ambiente .

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