Avatar billede feldthaus Nybegynder
14. august 2003 - 18:33 Der er 12 kommentarer og
1 løsning

Et Rewrite script

Jeg har prøvet at kigge lidt på nogle mod_rewrite eksempler og jeg kan da godt finde ud af at bruge eksemplerne, men når jeg selv har en problemstilling som jeg ikke kan finde nogle direkte eksempler til, så går jeg kold :D

Derfor håber jeg på lidt hjælp...

Jeg vil gerne have at når man kalder /side/underside/1010/ så kommer man til f.eks. index.php?page=side&uside=underside&id=1010
Det i sig selv er ikke noget stort problem, men jeg vil også have det sådan at hvis man kalder /side/ så kommer man til index.php?page=side

Dvs. underside og 1010 behøver ikke at være der.

Kan dette lade sig gøre?

Det ville ikke gøre noget hvis man på en måde sørgede for at nr. 3 (altså 1010) var et tal.

På forhånd tak osv ;)
Avatar billede gonza.dk Nybegynder
14. august 2003 - 19:20 #1
kan du ikke bare lave en .htaccess fil sådan:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([a-zA-Z._/]+)$ /index.php?page=$1 [R]

og så tjekke indholdet af $page med php-kode? lave en

$page = explode("/", $page);

Jeg kan i hvert fald ikke lige få det til at fungere på andre måder ;o)
Avatar billede gonza.dk Nybegynder
14. august 2003 - 19:26 #2
Du kan tjekke om en string er et tal med:

is_numeric() funktionen ;o)
Avatar billede feldthaus Nybegynder
14. august 2003 - 19:26 #3
Ok, det var også den metode jeg selv havde tænkt på, men jeg håbede på en lidt bedre metode ;)
Men hvis der ikke er andre muligheder, så må jeg vel tage til takke med den :)

2 ting:
RewriteBase /
.... [R]

Hvad betyder de ting?
Avatar billede feldthaus Nybegynder
14. august 2003 - 19:28 #4
> Du kan tjekke om en string er et tal med:

> is_numeric() funktionen ;o)

Ahh, vigtigt... den kendte jeg ikke... tak (tak, tak, tak) :D

Ved kig i manualen var der jo også is_string og alt muligt :)

Perfekt ;)
Avatar billede gonza.dk Nybegynder
14. august 2003 - 19:36 #5
[R] gør at urlen bliver til "index.php?page=en/lille/test" fjerner du [R] forbliver urlen som den blev kaldt, altså domain.dk/en/lille/test (men kan stadig trækkes ned med $_GET['page'])

og RewriteBase... tror du får den bedste forklaring fra apache's side ;o)

The RewriteBase directive explicitly sets the base URL for per-directory rewrites. As you will see below, RewriteRule can be used in per-directory config files (.htaccess). There it will act locally, i.e., the local directory prefix is stripped at this stage of processing and your rewriting rules act only on the remainder. At the end it is automatically added back to the path.

When a substitution occurs for a new URL, this module has to re-inject the URL into the server processing. To be able to do this it needs to know what the corresponding URL-prefix or URL-base is. By default this prefix is the corresponding filepath itself. But at most websites URLs are NOT directly related to physical filename paths, so this assumption will usually be wrong! There you have to use the RewriteBase directive to specify the correct URL-prefix.

Notice: If your webserver's URLs are not directly related to physical file paths, you have to use RewriteBase in every .htaccess files where you want to use RewriteRule directives.
Avatar billede feldthaus Nybegynder
14. august 2003 - 19:46 #6
Fattede jeg brik af :)
Men den får lov til at blive der ;)

Det med [R] var jeg sådan set helst fri for, så den har jeg fjernet.

Kan du ikke lige smide et link til Apache's beskrivelse af Rewrite (det lyder som om du har de lige ved hånden ;)
Avatar billede gonza.dk Nybegynder
14. august 2003 - 19:47 #7
Avatar billede feldthaus Nybegynder
14. august 2003 - 20:42 #8
Har tidligere haft en problemstilling lagt ud her på eksperten, som jeg håber du (gonza.dk - andre må self også :) kan komme med en løsning til:

Tråd: http://www.eksperten.dk/spm/354820
Avatar billede feldthaus Nybegynder
14. august 2003 - 20:49 #9
Gonza, du skal nok få dine point - men det ville være rigtig fedt hvis du kunne svare på ovenstående spørgsmål...
Avatar billede gonza.dk Nybegynder
14. august 2003 - 21:40 #10
Er det noget i stil med dette du vil (dit andet spm.)

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)$ /index.php?path=$1&navn=%{QUERY_STRING} [R]

hvis du så tilgår:
domæne.dk/forside?jesper

så vil du få dette:

domæne.dk/index.php?path=forside&navn=jesper

Jeg er ikke helt sikker på at det er dette du vil opnå...

(undskyld ventetiden, men internet brød ned...)
Avatar billede feldthaus Nybegynder
14. august 2003 - 22:14 #11
Hvor er det sejt :D

Vildere lavet - hvor fanden var du da jeg lavede min sidste tråd ;)

> (undskyld ventetiden, men internet brød ned...)
Det går nok - jeg overlever nok at vente en times tid ;)

Mange tak for hjælpen - du får lige en håndfuld point...
Avatar billede feldthaus Nybegynder
14. august 2003 - 22:16 #12
Det var forresten det jeg ville have, jeg lavede bare lidt om på det så der står:

RewriteRule ^([^/]+)$ /index.php?path=$1&%{QUERY_STRING} [R]

så jeg slettede navn=%
Avatar billede gonza.dk Nybegynder
14. august 2003 - 22:18 #13
*G* tror jeg var væk :-/

godt at du fik det til at virke som det vil ;o)

takker for points, er glad for at kunne hjælpe ;o)
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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