Regole di riscrittura PHP

L’URL effettivamente utilizzato dalla mia app è:

http://site.com/search.php?search=iPhone 

ma mi piacerebbe che fosse ansible ottenere lo stesso con

 http://site.com/iPhone 

Non ho esperienza delle regole di riscrittura, come posso impostarlo?

La soluzione ha funzionato ma il nuovo URL viene visualizzato nella barra degli indirizzi. Ho pensato che sarebbe stato ansible impostarlo in modo che appaia come se la posizione della pagina fosse

http://site.com/iPhone

senza cambiare visualizzazione

 http://site.com/search.php?search=iPhone 

È ansible? Grazie.

Crea un file chiamato .htaccess nella radice del tuo sito web e mettilo dentro.

 RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^(.*) search.php?search=$1 [R] 

Dovrebbe fare il trucco.

Suggerirei comunque di renderlo un po ‘più specifico, quindi potrebbe richiedere all’utente di una directory di ricerca nell’URL. ad esempio invece di mysite.com/IPhone usa mysite.com/search/IPhone che funzionerebbe come

 RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^search/(.*) search.php?search=$1 [R] 

Ciò rende più semplice avere pagine normali che non vengono reindirizzate, come su di noi o su una homepage di base.

Come dice Chris, questo non è PHP ma Apache lo fa, e se funziona può dipendere dalla configurazione di hosting.

Devi specificare qualcosa di simile nel tuo file .htaccess:

 RewriteEngine on RewriteRule /(.*) /search.php?search=$1 

Controlla anche:

  • mod_rewrite: Guida per principianti alla riscrittura degli URL
  • Modulo mod_rewrite, Motore di riscrittura degli URL

Le regole di riscrittura non fanno parte di PHP per quanto ne so, ma Apache (in particolare mod_rewrite ) o qualunque server tu stia usando. Per Apache, è necessario sul server avere un file chiamato .htaccess e inserire qualcosa come:

 RewriteEngine on RewriteRule ^(\w+)/?$ /index.php?search=$1 

^(\w+)/?$ è un’espressione regolare – corrisponde a qualsiasi parola di 1 o più caratteri, seguita da un / forse. Quindi cambia site.com/iPhone in site.com/index.php?search=iPhone . Suona bene?