Avatar billede Mik2000 Professor
21. december 2011 - 12:13 Der er 13 kommentarer og
1 løsning

mod_rewrite

Hej

Jeg har et spørgsmål

Jeg har kigget på mod_rewrite, og har fundet ud af hvordan man kan ændre f.eks. produkter/produkt1 til eksempelvis produkt.php?id=1

Men mit spørgsmål er så hvordan man skaber en struktur og giver dynamiske links.
For hvis jeg skal linke til et produkt i php filen kan jeg jo ikke bruge navnet til at linke til en url der f.eks. hedder produkter/produkt1, for man bør jo benytte det unike id til linket for at være sikker på det fungerer korrekt.

Så hvordan gøres det rent praktisk?
Avatar billede olebole Juniormester
21. december 2011 - 13:53 #1
<ole>

Du bruger unikke produktnavne - eller kombinationer af kategorier og produktnavne. Det kan f.eks. i en webshop være ganske vanskeligt, men så kan du gøre ligesom Eksperten, der ikke bruger spørgsmålsoverskriften som identifier i URL'en, men trådens ID i databasen.

Vælger du at bruge en unik kombination af produktnavn/kategori, bør du for at undgå dubletter lave et tjek i databasen, når du opretter en ny vare.

/mvh
</bole>
Avatar billede Mik2000 Professor
21. december 2011 - 23:29 #2
Et lille tillægsspørgsmål

De sider man skal hente på den pågældende side f.eks. en css fil, ser ud til at skulle være relative til den adresse man omskriver til, og ikke til selve den fil man har

Således at hvis filen er
www.domain.dk/fil.php?id=2

Linket er
www.domain.dk/2/

Så skal css filen der ligger på www.domain.dk/style.css inkluderes med:
../style.css
istedet for blot
styles.css

Kan man undgå dette, evt. ved at skrive en ting i htaccess filen som gør den bruger original placering?
Avatar billede olebole Juniormester
22. december 2011 - 00:36 #3
Nej, skriv altid adressen i forhold til roden (en slash i begyndelsen):

<link href="/style.css" ...>
Avatar billede Mik2000 Professor
26. december 2011 - 01:28 #4
Hej

Det er jo meget godt og så alligevel ikke.....

For hvis man har behov for at ligge det i en undermappe f.eks. www.domain.dk/test/ så virker det jo ikke længere, da css så vil ligge i www.domain.dk/test/css og ikke i www.domain.dk/css

Det samme gælder lokalt hvor det heller ikke virker pga. jeg benytter wamp som ser www som roden, og her ligger siden i en mappe
Avatar billede olebole Juniormester
26. december 2011 - 16:34 #5
Jamen, nu er teknologien jo ikke konstrueret til at opfylde samtlige dine behov. Man kan ikke forlange, at en server skal besidde clairvoyante evner og på egen hånd gætte, hvor du lægger dette eller hint dokument  =)
Avatar billede Mik2000 Professor
27. december 2011 - 01:20 #6
Nææh men det er vel i en eller andet forstand muligt med $_SERVER variablen og måske andre måder jeg ikke kender, og hvis der er en måde at gøre det smartest muligt og mest fleksibelt, frem for at lave det på en måde, og så skulle ændre det når der skal ændres noget :)
Avatar billede olebole Juniormester
28. december 2011 - 16:21 #7
Det er muligt, du ikke kan blive enig med dig selv om, hvor på serveren den pågældende fil skal ligge, men det er vel noget af et ansvar at sende videre til serveren!

Nej, der findes ingen servervariabler, der kan gætte, hvor du lægger dine filer. Det er dit job at holde styr på den slags  *o)

Hvorfor holder du ikke samme struktur på din WAMP og din 'rigtige' server? Det burde ikke volde problemer
Avatar billede Mik2000 Professor
28. december 2011 - 16:32 #8
Det er jo noget der skal installeres flere steder, og vi kan ikke styre om det skal være på domænet eller i en undermappe, så det er ikke op til mig at styre :)

Tænkte på noget i stil med:
$_SERVER[""]."/sted/noget.php

Wamp laver jo automatisk www som root, og jeg har en del sider så kan ikke have alle i root
Avatar billede olebole Juniormester
28. december 2011 - 16:40 #9
Jo, det er noget, du styrer. Hvis du ser på alle mulige andre moduler/extensions/libraries på WWW, så ligger filerne samme sted på alle installationer. Ellers ville det jo ikke være muligt at styre eller forudsige noget somhelst.

Derudover kan jeg ikke se forskellen på det, du viser i #8 - og det, jeg viser i #3. Kan du forklare mig, hvad forskellen er?
Avatar billede Mik2000 Professor
28. december 2011 - 19:04 #10
Desværre er det ikke noget jeg styrer, da der er sat specifikke krav om begge ting skal være muligt, så hvis man ikke kan, så skal det blot gøres manuelt fra sted til sted i virksomheden

Jeg tænker man måske kunne hente grundstien i en fil som inkluderes på siderne
f.eks. en fil som altid ligger i roden af selve denne side

Hvis den så ligger i:
www.domain.dk/mappe/fil.php
så vil grundstil være www.domain.dk/mappe/

Hvis den ligger i
www.domain.dk/fil.php
så vil grundstil være www.domain.dk/

Hvis man så satte denne variabel foran alle links, så burde den vel virke uanset om den er i undermappe eller ej
Avatar billede olebole Juniormester
28. december 2011 - 19:47 #11
Jo, det er noget, du selv styrer. Enten når du gennemgår kravspecifikationen med kunden - eller når du koder  *o)

Jeg forstår ikke rigtig dit spørgsmål. Det virker, somom du efterlyser en predefineret PHP-variabel - men mod_rewrite er jo en Apache udvidelse, som ikke har noget med PHP at gøre.

Anyway så er dette, hvad du kan finde i $_SERVER array'et
Avatar billede Mik2000 Professor
29. december 2011 - 19:27 #12
Ja det er egentlig også det jeg efterlyser :)
Noget tilsvarende bare til det andet
Avatar billede olebole Juniormester
30. december 2011 - 15:11 #13
Hvilket ikke bragte mig tættere på en forståelse af, hvad du søger  =)
Avatar billede Mik2000 Professor
08. februar 2012 - 00:09 #14
Hehe det er nok lidt rodet.....
Må hellere lukke, men tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester