[Apache vhosts] Regex

Pagina: 1
Acties:

  • nrg
  • Registratie: April 2001
  • Nu online
Ej :)

Ik wil op mijn server de domeinen en subdomeinen dynamisch laten lopen dmv een regex in het vhost config filetje van Apache.

De directorystructuur van de (sub)domeinen op mijn server is:
code:
1
/var/www/[domein.nl]/[subdomein]/html/

In die directory zitten dan de html/php files enzo.. :)

Nu heb ik op GoT een regex script gevonden wat subdomeinen afvangt, nl.:
code:
1
2
3
RewriteCond    %{HTTP_HOST}                    ^[^.]+\.domein\.nl$
RewriteRule      ^(.+)                                    %{HTTP_HOST}$1    [C]
RewriteRule      ^([^.]+)\.domein\.nl(.*)       /var/www/care4sites.nl/$1/html$2

Werkt aardig, maar ik wil dus ook de domeinen dynamisch laten lopen.

Ik heb een hoop geklooid, met behulp van de mod_rewrite guide van Apache, een guide op PHP Freakz en GoT.
Nog kom ik er niet uit..
Alle requests worden neergezet in /var/www/..

Mijn laatste probeersel:
code:
1
2
3
RewriteCond    %{HTTP_HOST}           ^[^.]+\.[^.]+$
RewriteRule      ^(.+)                            %{HTTP_HOST}$1        [C]
RewriteRule      ^([^.]+)\.([^.]+)(.*)    /var/www/$2/$1/html$3


Volgens mij is het heel makkelijk als je hiermee ervaren bent, maar ik snap er dus (nog) helemaal niks van..

Alvast bedankt voor de reacties en de hulp! :D

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Weet niet zeker of dat de goede module is maar zo doe ik het:
LoadModule vhost_alias_module /usr/lib/apache/mod_vhost_alias.so

UseCanonicalName Off
VirtualDocumentRoot /var/www/%2+/%1/html

Skill is when luck becomes a habit.


  • nrg
  • Registratie: April 2001
  • Nu online
eek schreef op 24 augustus 2002 @ 12:47:
Weet niet zeker of dat de goede module is maar zo doe ik het:
LoadModule vhost_alias_module /usr/lib/apache/mod_vhost_alias.so

UseCanonicalName Off
VirtualDocumentRoot /var/www/%2+/%1/html
Ik heb dit geprobeerd, maar het werkt niet.
Ik krijg een 404, dat 'ie '/' niet kan vinden.
In die laatste regel split je btw de REQUEST_URI oid toch ook helemaal niet :?

[edit]
Hmm, nu werkt het wel.
Volgens mij stond 'UseCanonicalName' toch niet op off ofzo..

  • nrg
  • Registratie: April 2001
  • Nu online
Nou, het werkt nu allemaal leuk en aardig, maar hoe vang ik nu de hosts af die niet bestaan?
Als ik naar http://bestaatniet.domein.nl/ ga zoekt Apache de homedir nog steeds op (/var/www/domein.nl/bestaatniet/html/ dus, en die bestaat niet). De user krijgt dan een 404, terwijl ik veel liever heb dat 'ie in dit geval als DocumentRoot /var/www/default/html/ pakt..

Vroeger toen alle vhosts statisch waren deed ik het zo:
code:
1
2
3
4
5
6
[..een hele rij vhosts..]

<VirtualHost *>
        ServerName *
        DocumentRoot /var/www/default/html/
</VirtualHost>

Maar dat werkt nu niet :'(

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
httpd.conf:
code:
1
2
3
4
5
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www"

  • nrg
  • Registratie: April 2001
  • Nu online
maartenba schreef op 24 augustus 2002 @ 18:55:
httpd.conf:
code:
1
2
3
4
5
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www"
Dat werkt niet, hij rewrite 'm gewoon naar een path wat niet bestaat, wat resulteert in een 404..

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Niet echt proper, maar kan je die niet afvangen met ErrorDocument - instructie ?

  • nrg
  • Registratie: April 2001
  • Nu online
maartenba schreef op 24 augustus 2002 @ 19:50:
Niet echt proper, maar kan je die niet afvangen met ErrorDocument - instructie ?
Het kán wel, maar eigenlijk wil ik alle request naar niet-bestaande domeinen naar een eigen pagina laten gaan ipv een normale 'Not found' 404..

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Een niet bestaand domein zal een 404 genereren, en door de ErrorDocument naar /var/www gestuurd worden...
code:
1
ErrorDocument 404 /var/www

  • nrg
  • Registratie: April 2001
  • Nu online
maartenba schreef op 24 augustus 2002 @ 20:29:
Een niet bestaand domein zal een 404 genereren, en door de ErrorDocument naar /var/www gestuurd worden...
code:
1
ErrorDocument 404 /var/www
Ja, maar een normale 404 waar een bestand niet gevonden kan worden zal dan ook dat bericht krijgen.
Ik wil een verschillende melding voor pagina niet gevonden en domein niet gevonden..

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Ok :)
Neem dit dan op in je httpd.conf:
code:
1
ErrorDocument 404 /home/sites/404/cgi-bin/notfound.cgi


In dat cgi-tje bak je dan hetvolgende:
- kijk na of het domein dat werd aangeroepen in een file staat (moet je wel alle bestaande domeinen 1x in een txt-tje zetten of zo)
- staat in file -> redirect normale 404
- staat niet in file -> redirect naar andere pagina

Als je der niet uitgeraakt wil ik hem wel bakken voor je, laat maar weten. PHP mag trouwes ook.

  • nrg
  • Registratie: April 2001
  • Nu online
maartenba schreef op 25 augustus 2002 @ 09:21:
Ok :)
Neem dit dan op in je httpd.conf:
code:
1
ErrorDocument 404 /home/sites/404/cgi-bin/notfound.cgi


In dat cgi-tje bak je dan hetvolgende:
- kijk na of het domein dat werd aangeroepen in een file staat (moet je wel alle bestaande domeinen 1x in een txt-tje zetten of zo)
- staat in file -> redirect normale 404
- staat niet in file -> redirect naar andere pagina

Als je der niet uitgeraakt wil ik hem wel bakken voor je, laat maar weten. PHP mag trouwes ook.
Ik heb alle beetje common errors al in een PHP script zitten, waar alle meldingen in een array zitten.
Ik zal die check er dan ook maar inbouwen.. :)

  • maartenba
  • Registratie: November 2001
  • Laatst online: 29-08 17:05
Goed, opgelost dan zeker ? :)
Pagina: 1