Quanto sono affidabili URI come /index.php/seo_path
-
26-09-2019 - |
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
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'.