Domanda

Ho notato, che a volte (soprattutto dove mod_rewrite non è disponibile) questo schema percorso viene utilizzato:

http://host/path/index.php/clean_url_here
--------------------------^

Questo sembra per lavoro, almeno in Apache, dove index.php si chiama, e si può interrogare la parte /clean_url_here via $_SERVER['PATH_INFO']. PHP anche tipo di pubblicizza questa funzione. Inoltre, per esempio, il CodeIgniter Framework utilizza questa tecnica come default per i loro URL.

La domanda: Quanto è affidabile la tecnica? Ci sono situazioni in cui Apache non chiamano index.php ma cerca di risolvere il percorso? Che dire di lighttpd, nginx, IIS, AOLserver?

A ServerFault domanda? Penso che sia ha più a che fare con l'utilizzo di questa funzione all'interno del codice PHP. Perciò chiedo qui.

Addendum: Come suggerito da VolkerK, una ragionevole estensione a questa domanda è: Come può un programmatore influenza l'esistenza di $_SERVER['PATH_INFO'] su vari tipi di server

È stato utile?

Soluzione

Credo questa domanda che è ugualmente adatta per StackOverflow e serverfault. Per esempio. I come uno sviluppatore può solo dirvi che pathinfo è così affidabile come qualsiasi utente-input (il che significa che può contenere praticamente qualsiasi cosa) e lo script può o non può riceverla a seconda della versione server web e la configurazione:

Apache: AcceptPathInfo
IIS: ad esempio AllowPathInfoForScriptMappings e Terzi e così via e via ...

Ma gli amministratori di server, eventualmente, può dire che le impostazioni si può aspettare "nel mondo reale", e perché tali impostazioni sono preferiti.
Quindi la domanda diventa: Quanta influenza si fa (o la base di utenti previsto) dispone della configurazione del server

.

Altri suggerimenti

AcceptPathInfo esigenze essere attivata al fine di avere questo lavoro.

Dalla mia esperienza direi che PATH_INFO è di solito disponibili in normali ambienti di web hosting e le impostazioni del server - anche su IIS - ma in rare occasioni, non lo è. Quando si costruisce un'applicazione che si suppone essere schierabili sul maggior numero di piattaforme possibili, non lo farei PATH_INFO fiducia a livello hard-coded.

Ogni volta che posso, cerco di costruire una funzione wrapper build_url() che, a seconda un'impostazione di configurazione, utilizza sia

  • l'URL www.example.com/index.php?clean_url=clean_url_here grezza
  • il meccanismo di www.example.com/index.php/clean_url PATH_INFO
  • mod_rewrite www.example.com/clean_url

e l'uso che in tutti i URL emette applicazione.

Ci potrebbe essere ingenui script (auto-linking per esempio) che non riconosce il formato di questo URL. In tal modo diminuendo la possibilità che verranno creati link ai tuoi contenuti.
Dal momento che modelli di espressioni regolari di produzione propria sono comuni per questi compiti, la probabilità di fallimento è del tutto reale.

Tecnicamente, questi URL vanno bene. SEO-saggio, sono 'meno perfetto'.

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