2015-04-30 12 views
5

Dopo molte ore che pasticciano con .htaccess sono arrivato alla conclusione di inviare qualsiasi richiesta di un singolo script PHP che avrebbe gestito:Redirect qualsiasi richiesta GET a un singolo script php

  • Generazione di HTML (qualunque il modo, include o dinamico)
  • 301 Reindirizzamenti con molta più flessibilità nella logica (per uno stupido .htaccess-eer)
  • 404 errori infine se la richiesta non ha senso.

lasciando in .htaccess la funzionalità minima.

Dopo alcuni test sembra abbastanza fattibile e dal mio punto di vista più preferibile. Tanto che mi chiedo cosa c'è che non va o può andare storto con questo approccio?

  • Prestazioni del server?
  • In termini di SEO non vedo alcun problema in quanto la procedura sarebbe "trasparente" ai bot.

redirector.php prevede una stringa di query che consiste nella richiesta effettiva. Quale sarebbe il codice .htaccess per inviare tutto lì?

risposta

1

Preferisco spostare tutti i file php in un'altra directory e inserire solo 1 file php nel percorso htdocs, che gestisce tutte le richieste. Altri file, i quali si desidera passare senza php, è possibile inserire in tale cartella anche con questo .htaccess:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php/$0 [L] 

file esistenti (JPG, JS o che cosa mai) sono ancora raggiungibile senza PHP. Questo è il modo più flessibile per realizzarlo.

Esempio:

- /scripts/ # Your PHP Files 
- /htdocs/index.php # HTTP reachable Path 
- /htdocs/images/test.jpg # reachable without PHP 
- /private_files/images/test.jpg # only reachable over a PHP script 
1

È possibile utilizzare questo codice per reindirizzare tutte le richieste in un file:

RewriteEngine on 
RewriteRule ^.*?(\?.*)?$ myfile.php$1 

Nota che tutte le richieste (tra cui fogli di stile, immagini, ...) verrà reindirizzato pure. Ci sono naturalmente altre possibilità (regole), ma questo è quello che sto usando e manterrà la stringa di query corretta. Se non ne hai bisogno è possibile utilizzare

RewriteEngine on 
RewriteRule ^.*?$ myfile.php 

Questa è una tecnica comune, come i bot e anche gli utenti vedono solo loro URL richiesto e non come viene gestito internamente. Le prestazioni del server non sono affatto un problema.

Perché si reindirizza tutti gli URL in un file php non c'è più una pagina 404, perché viene memorizzata nella cache dal file .php. Quindi assicurati di gestire correttamente gli URL non validi.

Problemi correlati