PDA

Bekijk Volledige Versie : apache mod_rewrite rules



Pantsy
12/04/05, 23:41
Ik wil het volgende laten werken:

Via domain.nl/m<id> of domain.nl/v<id> uit laten komen op profile.php

Deze link is dan inprincipe virtueel gelinkt aan het bestand profile.php

Ik heb het volgende geprobeerd en me ook rot gezocht in apache naar een oplossing, krijg het alleen nog (steeds) niet voor elkaar.

IndexIgnore *
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.domain.nl/m* [OR]
RewriteCond %{HTTP_HOST} ^www.domain.nl/v*
RewriteRule ^(.*) http://www.domain.nl/profile.php?ID=$1


Degene die voor mij het werkende antwoord heeft krijgt van mij een lekker koud biertje.

V. Kleijnendorst
12/04/05, 23:59
# multiviews gaan voor rewrite rules, hier voor de zekerheid uit dus
Options -Multiviews

RewriteEngine On
RewriteRule ^m([a-zA-Z0-9_]*)$ /profiel.php?id=$1 [NC,L]
RewriteRule ^v([a-zA-Z0-9_]*)$ /profiel.php?id=$1 [NC,L]

Pantsy
13/04/05, 00:06
Kijk dat werkt! Zit enkel nog met het probleem dat de variabel $1 niet word vervangen door het <id> wat word ingevuld (bv: domain.nl/m11), maar dat is meer een vraag voor de programma makers lijkt mij.

Hoe gaan we het biertje oplossen? Echt hartstikke bedankt!

MaffeMuis
13/04/05, 00:16
RewriteEngine On
RewriteRule ^(.*)/fotoboek/$ /fotoboek/album.php?mem=$1 [L,QSA]
RewriteRule ^(.*)/fotoboek$ /fotoboek/album.php?mem=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /members/member.php?mem=$1 [L,QSA]




werkt dus als bijv: domein.nl/nickname
en de eerste 2 regels zijn voor

domein.nl/nickname/fotoboek


de QSA staat voor _POST variable enzo



RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

de bovenste 2 bekijken of de map toevallig bestaat... dan heeft dat voorrang :)

V. Kleijnendorst
13/04/05, 00:19
ik houd toch niet zo van bier :p

Komt domain.nl/m11 niet binnen als domain.nl/profiel.php?id=11?

Ik probeerde de regel hier net en dat lijkt te werken...
Je kunt het voor de zekerheid even zo testen:



<pre>
<?php
print_r($_GET);
echo '<hr />';
print_r($_SERVER);
?>
</pre>

Pantsy
13/04/05, 00:37
als ik domain.nl/m30 invul, kom ik uit op domain.nl/profile.php?id=$1 uit. Deze linkt op zijn beurt gewoon weer naar profile.php, de $1 variabel zorgt er niet voor dat m30 word geforward naar profile.php?id=30

Pantsy
13/04/05, 22:19
Het is helemaal opgelost, HOOFDLETTER kwestie... helaas heeft dat ook nog invloed :)

MaffeMuis
13/04/05, 22:55
2 rulez extra er bij zetten dan he

RewriteRule ^M([a-zA-Z0-9_]*)$ /profiel.php?id=$1 [NC,L]
RewriteRule ^V([a-zA-Z0-9_]*)$ /profiel.php?id=$1 [NC,L]
RewriteRule ^m([a-zA-Z0-9_]*)$ /profiel.php?id=$1 [NC,L]
RewriteRule ^v([a-zA-Z0-9_]*)$ /profiel.php?id=$1 [NC,L]


als je deze gebruikt rulez gebruikt. en in je php script dan lowercase laten maken :) Mits het geen getallen zijn ;)