[apache/php] mod_rewrite en diraccess

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heejdiehoi! Ik wilde een systeempje maken zodat je kan aangeven dat een user in bepaalde mappen mag kijken, en in de andere mappen niet (met kijken bedoel ik dan in de browser oproepen). Dit wil ik echter doen zonder in iedere map een bestandje te zetten, dus eigenlijk gewoon vanuit 1 bestand.

Nou had ik bedacht dat ik dat misschien het beste kon doen met een RewriteRule zodattie alle aanroepen van mappen redirect naar dat ene bestand en dan kijkt of de rechten van die user goed zijn (of als er geen user is een inlogschermpje produceert) en daarna met een header ofzo de pagina laat zien of natuurlijk een "je-mag-hier-helemaal-niet-komen" bericht.

Mijn vraag is nu eigenlijk, dis dit de beste manier om zo'n systeempje te maken, kan dat met een RewriteRule of is er een betere manier?
Als het met een rewriterule kan zou ik willen weten hoe ik die regel zou moeten formuleren, want met de regel die ik net had geschreven (zie hieronder) liep mijn server helemaal over de emmer omdat hij in een infinite loop kwam... (met alle kosten van de remote poweroff enzo vandien :D)

dit was dus mijn regeltje:
code:
1
2
3
4
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([a-zA-Z]+)$ /index.php?x=$1 [R]


dusss... iemand suggesties?

Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Tip: Test zoiets lokaal. Apache draait ook leuk onder windows en kost toch geen stuiver :)

De vraag is ook een beetje hoe je index.php eruit ziet. Als die zegt: "Rechten goed" dan moet ie natuurlijk je niet weer gewoon redirecten naar die map want dat wordt weer ondervangen door Apache.

En kijk ook eens naar RewriteMap met als MapType een external file. http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteMap
(ik bedenk me wel dat je vanuit die external file geen verder informatie van de bezoeker hebt, dus geen cookies of IP oid.. niet echt handig dus)

[ Voor 38% gewijzigd door CyberSnooP op 22-11-2002 12:36 . Reden: het bleek een slechte tip ]

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nee vandaar dat ik ook zei met bijvoorbeeld een header("Location ...")
dan moet dat iig toch wel goed gaan?

Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Verwijderd schreef op 22 November 2002 @ 12:34:
nee vandaar dat ik ook zei met bijvoorbeeld een header("Location ...")
dan moet dat iig toch wel goed gaan?
Als ik me niet vergis komt die header gewoon bij de browser terecht die vervolgens opnieuw een http-request plaatst voor de nieuwe locatie die je opgeeft. Die request komt gewoon weer binnen bij apache en wordt dus weer door je rewrite rules heen gehaald

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CyberSnooP schreef op 22 November 2002 @ 12:37:
[...]
Als ik me niet vergis komt die header gewoon bij de browser terecht die vervolgens opnieuw een http-request plaatst voor de nieuwe locatie die je opgeeft. Die request komt gewoon weer binnen bij apache en wordt dus weer door je rewrite rules heen gehaald
Damn, dus dan gaat dat zo niet lukken... Misschien een andere suggestie voor mijn probleempje ... ? :D

Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Verwijderd schreef op 22 november 2002 @ 12:38:
Damn, dus dan gaat dat zo niet lukken... Misschien een andere suggestie voor mijn probleempje ... ? :D
De weergave van de directory ook laten afhandelen door je index.php script?

Schrijf gewoon een soort van directory lister in PHP (of zoek een bestaande). Als je nu de echte directories buiten je DocumentRoot plaatst en eventuele bestandsaanvragen laat afhandelen door dat script (die dus bij voldoende rechten en in het geval van een bestand met fpassthru het bestand doorpasst) ben je waar je wezen moet denk ik.

Bovendien kun je door gebruik te maken van de MultiView(s?) van Apache zorgen dat elke directory aanvraag (binnen een subdirectory) uitkomen bij jou file.

Wat eenvoudiger is eventueel toch de gewone .htaccess-methode te gebruiken. Bedenk wel dat je alle opties voor directories goed vanuit een bestand kunt instellen, dus niet persee in elke directory een file.

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CyberSnooP schreef op 22 november 2002 @ 12:44:
Bedenk wel dat je alle opties voor directories goed vanuit een bestand kunt instellen, dus niet persee in elke directory een file.
Maar dan moet je wel bij iedere nieuwe directory een nieuwe regel in je .htaccess zetten zeker... dat is ook niet helemaal de bedoeling, die rechten enzo komen gewoon in een mysqldatabaseje waar ik dan een mooie interface voor bouw enzo, maar das zo gepiept. Zo'n directorylister enzo heb ik ook allemaal al wel eens gebouwd, de phpkant is het probleem niet, mijn enige echte probleem is dus, HOE ik alle aanvragen onder de root (en alle subdirs enzo) bij een bestandje in de root kan laten uitkomen die dan niet nog een keer zichzelf weer verwijst naar zichzelf etc (weer die infinte loop natuurlijk :D)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmmm... zal ik um dan toch maar eventjes subtiel schoppen? aangezien ik nog niet echt een antwoord heb gehad, heb nou wel al wat anders bedacht, maar ik wil eerst zeker weten of het klopt voordat weer alles de soep in draait...

code:
1
2
3
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^\/(.*)$ /index.php/$1 [NC,QSA,L]


en wat ik hiermee wil bereiken is dat hij alle submappen en bestanden naar index.php stuurt behalve index.php ... ?
Pagina: 1