[Apache]Per-user documentroot

Pagina: 1
Acties:

  • Abidan
  • Registratie: Februari 2001
  • Laatst online: 23-02 20:22
Wanneer een webpagina onder http://sitenaam/ aangeroepen wordt, moet de standaard documentroot geset worden. Wanneer echter http://sitenaam/~user aangeroepen wordt, moet de documentroot gewijzigd worden naar een user-speciefieke directory.

http://www.webmasterworld.com/forum40/219.htm

Kort maar krachtig: in bovenstaande link wordt exact beschreven wat ik wil.
Ik heb al heel wat geprobeerd met Virtual Hosts, maar het wil niet. Ik krijg een beetje het gevoel dat Virtual Host niet de oplossing is. Maar hoe moet het wel?


bah, link werk niet op deze manier, hieronder de tekst uit de link:
edit:


Hey everybody,
I'm just setting up the Apache server on Mac OS X, and I'm having a problem...

I'm using the include() function in PHP, and in order to make my code portable, I'm including based on the Apache variable documentroot.

What I want to do is be able to set the documentroot variable differently for each user's directory, so that, for example:

localhost/~user1 - their documentroot is /home/usr/user1/html

and

localhost/~user2 - their documentroot is /home/usr/user2/html

Right now, documentroot is global for everything, and it's based on the file locations of localhost/, which isn't in a user's directory.

Any ideas??? Can I do it globally, or should I be doing this in a .htaccess file for each user, and in either case, how do I do it???

Thanks in advance...

[ Voor 55% gewijzigd door Abidan op 01-01-2004 23:29 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ik kan die url niet openen, maar bedoel je zoiets: http://httpd.apache.org/docs/suexec.html

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Uit httpd.conf:
code:
1
2
3
4
5
# UserDir: The name of the directory which is appended onto a user's home
# directory if a ~user request is received.
<IfModule mod_userdir.c>
    UserDir public_html
</IfModule>


volgens mij bedoel je dat?

  • Abidan
  • Registratie: Februari 2001
  • Laatst online: 23-02 20:22
Suexec kan volgens mij alleen maar linken naar een documentroot ONDER de originele documentroot. Dit is niet de bedoeling, want de documentroot moet geset worden op de homedirectory van de betreffende gebruiker.

Ik vroeg me eigenlijk af of het mogelijk is om op de manier van de optie 'Userdir = /home/*/subdir" iets te doen voor documentroot, waarbij * vervangen wordt door de gebruikersnaam.

  • KeesV
  • Registratie: September 2001
  • Laatst online: 08:33

KeesV

Zonder titel

Wat Ali_Illegali zegt. Users kunnen dan hun html bestanden in /home/user/public_html zetten en die is dan benaderbaar via http://www.server.com/~user waarbij 'user' dan dus de betreffende gebruikersnaam is.

Ik doe niet aan sigs


  • Abidan
  • Registratie: Februari 2001
  • Laatst online: 23-02 20:22
Ali_Illegali schreef op 01 januari 2004 @ 23:20 {message}
volgens mij bedoel je dat?
Inderdaad, maar dit geldt voor de directory waaruit bijv. de html bestanden worden gelezen, maar hiermee kan documentroot niet veranderd worden. Ik vroeg me dus af of zoiets mogelijk is voor documentroot, want dat zou alles veel makkelijker maken:)

edit:

[quote]KeesV schreef op 01 januari 2004 @ 23:24:
Wat Ali_Illegali zegt. Users kunnen dan hun html bestanden in /home/user/public_html zetten en die is dan benaderbaar via http://www.server.com/~user waarbij 'user' dan dus de betreffende gebruikersnaam is.[/quote]

dit is het probleem niet, het probleem is dat de documentroot mee moet veranderen naar deze directory

[ Voor 41% gewijzigd door Abidan op 01-01-2004 23:27 ]


  • Abidan
  • Registratie: Februari 2001
  • Laatst online: 23-02 20:22
*schopje*

Modbreak (Koffie) :
Schoppen is op zo'n korte termijn niet nodig en gewenst, zeker niet in PNS.

[ Voor 86% gewijzigd door Koffie op 02-01-2004 13:18 ]


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 20:18

LauPro

Prof Mierenneuke®

Dus alle aanvragen naar /~username moeten naar 1 map toe? Misschien dat je dan creatief met symlinks kan gaan doen? Of anders een rewritescript gebruiken.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • [NUT]
  • Registratie: Juni 2001
  • Laatst online: 18-02 12:34

[NUT]

Heppiedepeppie

Volgens mij vraag je nu naar dat wat standaard in Apache zit:

Dit is wat je wil geloof ik, bevestig dat als het klopt:

http://domein.com -> /usr/local/www

http://domein.com/~user -> /home/~user/www

Als DIT is wat je wil, dan zit dat standaard in Apache... mod_userdir.c

  • Abidan
  • Registratie: Februari 2001
  • Laatst online: 23-02 20:22
reactie op [NUT]:
Dit zit inderdaad standaard in apache, en dat is heel mooi, maar het is niet zo mooi dat ze dit niet ingebouwd hebben voor de documentroot. Documentroot is niet hetzelfde als Userdir, zoals je hierboven suggereert.

Dat de userdir per gebruiker veranderd werkt inderdaad goed, maar niet alleen de userdir moet per gebruiker veranderen, maar OOK de documentroot.

reactie op LauPro:
Inderdaad, het zal er uiteindelijk wel op uitdraaien dat ik de userdir weer unset, en gewoon een scriptje ga maken, of bezig ga met symlinks. Vooral met dat laatste zal het moeten lukken, alleen het is omslachtig. Het 'routen' naar de userdir zal ik dan vervangen door een AliasMatch, en de Documentroot kan met een enkele algemene virtualhost met daarin een directorymatch veranderd worden. Het bovenstaande zal dan alleen werken als ik de Userdir optie blank laat, aangezien deze taak overgenomen wordt door AliasMatch. De tilde ~ zal niet meer gebruikt worden in het aanroepen van de url. Een gebruiker zal dan geemuleerd worden met een directory, dus ipv http://ip/~user zal het worden http://ip/userdir, zodat het laatste gezien wordt als het aanroepen van een directory, ipv een user.

Het is nogal een ingewikkeld verhaal, en niet echt makkelijk te maken, maar zo zou het toch moeten lukken:)

PS. wanneer ik de oplossing heb zal ik het hier nog wel ff posten, volgens mij zitten wel meer gebruikers met dit probleem.

  • [NUT]
  • Registratie: Juni 2001
  • Laatst online: 18-02 12:34

[NUT]

Heppiedepeppie

Ok, duidelijk... wat staat er in de documentroot wat voor het domein wel geld maar voor de users niet? gaat het hier om error docs of een fallback page? Zie mijn Apache topic in dit forum voor dat waar ik zelf mee worstelde, misschien geeft het je een idee om het eventueel met mod_rewrite op te lossen in combinatie met mod_vhost_alias ? misschien dat je daarmee de DocumentRoot kan verleggen op DIE manier zoals jij dat wilt... De laatste heeft VirtualDocumentRoot ... misschien een interessante optie?

linkjes om je mee in te lezen:
http://httpd.apache.org/docs/mod/mod_rewrite.html
http://httpd.apache.org/docs/mod/mod_vhost_alias.html

  • Abidan
  • Registratie: Februari 2001
  • Laatst online: 23-02 20:22
Ja, inderdaad, hier zou het mee moeten lukken. Met VirtualHost icm VirtualDocumentRoot. Vraag is echter of ik de Userdir directive dan kan laten staan of niet, omdat ~user misschien niet (meer) als directory wordt gezien als de UserDir directive gezet is. Maar dat is niet zo belangrijk, het is een kwestie van uitzoeken.

  • [NUT]
  • Registratie: Juni 2001
  • Laatst online: 18-02 12:34

[NUT]

Heppiedepeppie

DarkPriest schreef op 02 januari 2004 @ 18:16:
Ja, inderdaad, hier zou het mee moeten lukken. Met VirtualHost icm VirtualDocumentRoot. Vraag is echter of ik de Userdir directive dan kan laten staan of niet, omdat ~user misschien niet (meer) als directory wordt gezien als de UserDir directive gezet is. Maar dat is niet zo belangrijk, het is een kwestie van uitzoeken.
Deze kan gewoon blijven staan, omdat de virtualhost directive totaal los staat van de userdir directive :)
Pagina: 1