Avatar billede rax Praktikant
17. december 2008 - 01:12 Der er 16 kommentarer og
2 løsninger

Hjaelp til mod_rewrite

Hej eksperter!

Jeg skal gerne have noget mod_rewrite og koere paa min side, men kan ikke helt faa det til at spille. Er ikke saa skarp til url rewrite (endnu), og har forsoegt at laese mig til det i diverse udemaerkede artikler, men tilstaa at jeg har brug for lidt guidence.

Jeg proever at opnaa foelgende:

http://www.mysite.com/news/123 bliver til http://www.mysite.com/shownews.php?newsid=123

http://www.mysite.com/games/spil1 bliver til http://www.mysite.com/games.php?game=spil1

http://www.mysite.com/games/gruppe1/spil1 bliver til http://www.mysite.com/games.php?group=gruppe1&game=spil1

De tre ovenstaaende er vidst relativt simple, men har alligevel ikke faaet dem til at lykkes. Vil saette stor pris paa hjaelp fra en mod_rewrite kyndig person.

Derudover har jeg brug for foelgende:

http://www.mysite.com/anythinghere bliver til http://www.mysite.com/anythinghere.php

med andre ord, at der bliver smidt .php paa til sidst, saa man kan linke uden at bruge file-extensions.

Takker meget for jeres hjaelp!!
Avatar billede rax Praktikant
17. december 2008 - 01:32 #1
variablen newsid kan KUN vaere en integer

variablerne game og group kan indeholde lower-case letters a-z, tal 0-9 og bindestreg "-"
Avatar billede jakobdo Ekspert
17. december 2008 - 09:52 #2
Test denne:

RewriteEngine on
RewriteRule ^news/([0-9]*)/?$ shownews.php?newsid=$1
RewriteRule ^games/([a-z0-9]*)/?$ games.php?game=$1
RewriteRule ^games/([a-z0-9]*)/([a-z0-9]*)/?$ games.php?group=$1&game=$2
RewriteRule ^([a-z0-9]*)/?$ $1.php
Avatar billede coderdk Praktikant
17. december 2008 - 14:22 #3
jeg ville dog bruge base og tilføje bindestrengen, samt kun rewrite hvis noget ikke findes:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news/([0-9]*)/?$ shownews.php?newsid=$1
RewriteRule ^games/([a-z0-9-]*)/?$ games.php?game=$1
RewriteRule ^games/([a-z0-9-]*)/([a-z0-9]*)/?$ games.php?group=$1&game=$2
RewriteRule ^([a-z0-9-]*)/?$ $1.php
Avatar billede rax Praktikant
17. december 2008 - 16:46 #4
Har prøvet begge jeres svar, men oplever et par problemer:

1) når jeg indtaster www.mysite.com nu, så får jeg en 404 fejl. Jeg skal indtaste www.mysite.com/index for at den åbner startsiden.

2) når jeg indtaster www.mysite.com/news/2 , så åbner den det rigtige sted, men min css og images bliver ikke læst ind ?!? det er ret mærkeligt, får bare siden i ren tekst og links, som sad jeg i en lynx browser.

Håber i kan hjælpe mig videre
Avatar billede coderdk Praktikant
17. december 2008 - 19:33 #5
Hmm, dette er netop hvad min løsning burde modvirke?!
Avatar billede jakobdo Ekspert
17. december 2008 - 20:45 #6
Coderdk: Din kode virker heller ikke.
Ved kald til / melder den:
The requested URL /.php was not found on this server.
Avatar billede jakobdo Ekspert
17. december 2008 - 20:51 #7
Men en kombination af min kode, coderdk's og så denne rettelse:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news/([0-9]*)/?$ shownews.php?newsid=$1
RewriteRule ^games/([a-z0-9-]*)/?$ games.php?game=$1
RewriteRule ^games/([a-z0-9-]*)/([a-z0-9]*)/?$ games.php?group=$1&game=$2
RewriteRule ^([a-z0-9-]+)/?$ $1.php

Rettede
RewriteRule ^([a-z0-9-]+)/?$ $1.php
fra * -> +
Avatar billede coderdk Praktikant
17. december 2008 - 21:39 #8
Ja, det ville virke. Tror også at dette ville:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^$ -
RewriteRule ^news/([0-9]*)/?$ shownews.php?newsid=$1
RewriteRule ^games/([a-z0-9-]*)/?$ games.php?game=$1
RewriteRule ^games/([a-z0-9-]*)/([a-z0-9]*)/?$ games.php?group=$1&game=$2
RewriteRule ^([a-z0-9-]+)/?$ $1.php
Avatar billede coderdk Praktikant
17. december 2008 - 21:40 #9
(Tilføjede: RewriteRule ^$ -)
Avatar billede rax Praktikant
18. december 2008 - 06:19 #10
det løste problem nummer 1, kanon!

problem nummer 2 består stadig, nemlig i følgende:

når jeg indtaster www.mysite.com/news/2 , så åbner den det rigtige sted, men min css og images bliver ikke læst ind ?!? det er ret mærkeligt, får bare siden i ren tekst og links, som sad jeg i en lynx browser.
det gælder også for www.mysite.com/games/gruppe1 og www.mysite.com/games/gruppe1/spil1

derudover, hvis jeg navigerer til www.mysite.com/news/1 og følger et links til f.eks. games (som i koden er href="games.php"), så prøver den at navigere til www.mysite.com/news/1/games.php. Skal jeg omskrive mine links til absolutte stier, f.eks. www.mysite.com/games.php, for at komme uden om dette?

Håber meget i kan hjælpe med disse to hurdler.
Avatar billede jakobdo Ekspert
18. december 2008 - 08:19 #11
Du kan løse dit problem ved at bruge:

/css/style.css
og ikke
css/style.css

Og ligeledes med images.

<img src="images/gfx1.jpg" />
skal være:
<img src="/images/gfx1.jpg" />
Avatar billede rax Praktikant
05. januar 2009 - 16:22 #12
tusinde tak, fik løst mit problem med jeres fælles hjælp! læg et svar hver, så får jakobdo 100 point, og coderdk 50. Igen, tak :)
Avatar billede coderdk Praktikant
05. januar 2009 - 16:29 #13
:)
Avatar billede rax Praktikant
05. januar 2009 - 17:33 #14
hvordan giver jeg delpoint ? :P skal jeg vente til i begge har svaret?
Avatar billede coderdk Praktikant
05. januar 2009 - 18:06 #15
Yeah, vent bare til jakobdo svarer :)
Avatar billede jakobdo Ekspert
05. januar 2009 - 20:35 #16
Svar!
Avatar billede rax Praktikant
06. januar 2009 - 16:29 #17
Takker jer begge to, i har endnu engang hjulpet mig videre. Jeg har nu fået en langt bedre forståelse for mod_rewrite.
Avatar billede jakobdo Ekspert
06. januar 2009 - 20:24 #18
Takker for point.
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