Hvordan designe URLer i PHP?

Hvordan designe URLer i PHP?

Innleggav tjodolv » man 10.12.2007 19:04

Litt vanskelig med en god tittel her, men det jeg altså lurer på er:
Mange blogger har en url-oppbygging som er slik at man har domenenavnet etterfulgt av feks årstall, månedsnavn, postnavn feks:
Kode: Merk alt
http://www.domene.no/2007/12/hvordan_bake_pepperkaker/

En lite elegant løsning vil jo være å la scriptet skrive kataloger etter hvert som brukeren oppretter innhold, med en index-fil i katalogen, feks:
Kode: Merk alt
<?php
   if (!file_exists("/$year")) {
      mkdir("/$year");
   }
   if (!file_exists("/$year/$month")) {
      mkdir("/$year/$month");
   }
   if (!file_exists("/$year/$month/$story_path")) {
      mkdir("/$year/$month/$story_path");
   }

   $newIndex = fopen("/$year/$month/$story_path/index.php", "a");
   $indexContent = ""; // filens innhold her
   fwrite($newIndex, $indexContent);
   fclose($newIndex);
?>

Hvordan gjør man dette på en elegant måte? Altså feks et "sentralt" script som fanger opp denne urlen og viser innholdet som hører til, uten at katalogen /2007/12/hvordan_bake_pepperkaker faktisk eksisterer?

Brukerens avatar
medlem i 209 måneder
 

Re: Hvordan designe URLer i PHP?

Innleggav eelay » man 10.12.2007 19:19

Om du kjører en apacheserver så har du en modul som heter mod_rewrite, som kan skrive om url'er dynamisk basert på regler som er skrevet i en .htaccess fil.
eks. om du har en side som heter http://dittDomene.no/index.php?site=mitt_innhold , så kan dette skrives om til http://dittDomene.no/mitt_innhold eller evt. http://dittDomene.no/2007/12/mitt_innhold osv.

Mulighetene er egentli meget mange med url rewrite, så det enkleste er muligens å google litt etter det, eller se hvordan eks. wordpress gjør dette. Det spørs jo også hvordan du lagrer innhold o.l. (database, tekstfiler eller noe sånt)

Brukerens avatar
medlem i 199 måneder
 

Re: Hvordan designe URLer i PHP?

Innleggav ak » man 10.12.2007 19:28

Drupal har en relativt elegant loesning som bruker mod_rewrite og som fungerer som foelgende
1) Sjekker at URLen ikke peker til en fil
2) Sjekker at URLen ikke peker til et directory
3) Skriver om /modul/sti/fil til index.php?q=modul/sti/fil
4) Bruker "routing" kode for aa finne ut hvem som skal haandtere forespoersler etter "modul"
5) Kaller opp koden som haandterer "modul" og sender inn sti/fil , koden haandterer resten.

O'Reilly har en bok om RESTful APIs som jeg anbefaler i denne sammenheng, selv om det er hakket lenger enn det du spoer om akkurat naa.

Administrator
Brukerens avatar
medlem i 237 måneder
 

Re: Hvordan designe URLer i PHP?

Innleggav termserv » man 10.12.2007 19:30

Jeg bruker mod_rewrite på nettsidene mine, og slik ser (en liten del) av .htaccess-filen min ut:
Kode: Merk alt
# Arkivfunksjoner
RewriteRule ^([0-9]{4})/([0-9]{2})/?$ /index.php?id=archive&year=$1&month=$2 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([A-Za-z0-9-]+)/?$ /index.php?id=art&year=$1&month=$2&post=$3 [L]


URLene mine er delt opp slik:
- http://www.ronny-andre.no/(år, 4 siffer)/(måned, 2 siffer)/(eventuelt postnavn)/
Eksempelvis:
http://www.ronny-andre.no/2007/12/final-cut-pro-6/

Hvis postnavn ikke finnes, går den direkte til arkivsiden:
http://www.ronny-andre.no/2007/12/

Fordelen med slike URLer er at det ser mye pener ut, og er mer søkemotorvennlige. Har også "snarveis-URL"-er, som er ronny-andre.no/id/(post-id)/

Brukerens avatar
medlem i 211 måneder
 

Re: Hvordan designe URLer i PHP?

Innleggav tjodolv » man 10.12.2007 20:53

takker og bukker :) da skal jeg se på det ja

Brukerens avatar
medlem i 209 måneder
 


Returner til PHP



Hvem er i Forumene

Registrerte brukere: Google [Bot]