Avatar billede mazey Praktikant
23. oktober 2008 - 20:01 Der er 14 kommentarer og
1 løsning

Links og URL

Hej Eksperter...
Jeg har kodet PHP i et stykke tid, og har altid lavet mine projekter således:

index.php fil hvor der deri ligger hele designet, som f.eks. er opbygget i en tabel.
Når en bruger så klikker i menuen linker den til en anden side, som så inkluderes i index.php filen.
if($_GET[page] != ""){
  include('pages/'.$page.'.php');
  }else{
  include('pages/index.php');
  }

Eksemplet kunne være index.php?page=kontakt --> her hentes så kontakt.php ind i index.php filen.
Det er vel fint nok, men nu ser jeg mere og mere at der bliver linket anderledes, som eksempelvis her på eksperten hvor spørgsmålene kan se således ud i URL'en:
http://www.eksperten.dk/spm/676044

Hvordan gør man det og er det bedre end den måde jeg gør det på?
Jeg har også set sider som generer dynamisk indhold, men siden i URL'en ender på enten .htm eller .html.

Er der nogen der kan fortælle mig hvordan man gør som ekspertens links, samt om det er en bedre idé (fordele og ulemper)?

Tak!
Avatar billede jensgram Nybegynder
23. oktober 2008 - 20:15 #1
Du befinder dig sandsynligvis på en Apache-server, og så hedder det mod_rewrite. Det er aldrig lykkes mig at finde en rigtig god guide, men her er da en start: http://www.workingwith.me.uk/articles/scripting/mod_rewrite
Avatar billede jensgram Nybegynder
23. oktober 2008 - 20:17 #2
Utestet:

Hvis du vil have '/kontakt' til at gå til '/index.php?page=kontakt'

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (.*) index.php?page=$1 [L]
Avatar billede majbom Novice
23. oktober 2008 - 20:49 #3
jeg har selv lært det her: http://www.phpartikler.dk/artikler/htaccess.php - der er også en artikel om regular expressions, som er meget godt at vide lidt om når man leger med url-rewriting.

du skal nok bruge noget a la:

RewriteRule ^(.+)$ index.php?page=$1

så kan du skrive "ditdomæne.dk/kontakt" også går den ind på: "ditdomæne.dk/index.php?page=kontakt"
Avatar billede mazey Praktikant
23. oktober 2008 - 20:49 #4
Ja, det meste af det jeg laver er på et webhotel ved One.com

Den RewriteEngine, hvor skal den tilføjes henne? Det er måske One.com der skal tilbyde den service?
Avatar billede majbom Novice
23. oktober 2008 - 21:02 #5
du skal, som du kan læse i artiklen på phpartikler, oprette en .htaccess fil i roden af dit webhotel.
Avatar billede jensgram Nybegynder
23. oktober 2008 - 21:02 #6
Ja, som splazz skriver, bør der nok være ^ og $ med :)

Det skal skrives i en '.htaccess', jf. link ovenfor.
Avatar billede jensgram Nybegynder
23. oktober 2008 - 21:02 #7
Same same :)
Avatar billede mazey Praktikant
23. oktober 2008 - 21:05 #8
Ok, det dumme spørgsmål kommer så lige her:
Der er en .htaccess fil allerede, som har dette i sig:
# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>


Kan jeg bare slette det, og tilføje det som er i den tutorial, uden at det har indflydelse på selve webhotellet? :)
Avatar billede mazey Praktikant
23. oktober 2008 - 21:09 #9
Tog lige en kopi af den eksisterende .htaccess fil og lagde en ny op med den ErrorDocument 404 "test - den viser dog ikke noget når jeg taster en tilfældig URL, andet end at siden ikke kan vises... :(
Måske one.com ikke understøtter det?
Avatar billede mazey Praktikant
23. oktober 2008 - 21:20 #10
Der er også en mappe (_vti_bin/)med en .htaccess fil. Har også prøvet med denne, men uden effekt. :(
Avatar billede jensgram Nybegynder
23. oktober 2008 - 21:40 #11
Hmm - ja, det bør jo være den, der ligger i roden.
Avatar billede mazey Praktikant
23. oktober 2008 - 21:44 #12
Altså jeg har forsøgt at slette dem begge, har også forsøgt at slette den i _vti_bin mappen hvorefter jeg har skrevet følgende i .htaccess filen i roden:

RewriteEngine On
RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L]

Så får jeg den dog til at reagere, for hvis jeg herefter taster en URL uden selve filnavnet, giver den mig bare resultatet "no input file specified"... (normalt, hvis man f.eks. "skriver http://www.domain.dk/pages/" så ved den at det er en index fil den skal åbne) - lidt svært at forklare...
Avatar billede majbom Novice
24. oktober 2008 - 08:17 #13
prøv evt. noget simpelt som:

RewriteEngine On
RewriteRule ^test.html$ index.php [L]
Avatar billede walkie84 Nybegynder
27. oktober 2008 - 10:48 #14
Hej mazey..
Jeg har næsten lige spurgt om det samme, og bruger nu følgende i .htaccess:

RewriteEngine on
RewriteRule ^news/([0-9]+)/?$  news.php?id=$1

Dette gør at hvis jeg f.eks. har en side som hedder news.php?id=532 , så kan jeg linke til www.domæne.dk/news/532/
:)
Avatar billede mazey Praktikant
25. januar 2009 - 16:19 #15
Jeg læste artiklen igennem som du skrev, og prøvede et andet webhotel, og der virkede din kode.

Nu er der dog flere spørgsmål, men her laver jeg et nyt spørgsmål - 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