login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Wildcard subdomeinen met .htaccess

Offline bertenz - 06/09/2009 15:40
Avatar van bertenzHTML beginner Hallo allemaal,

Met behulp van allerlei tutorials ben ik al een paar dagen bezig om wildcard subdomeinen in te stellen.
Wat ik namelijk probeer te maken is dat elke gebruiker een eigen subdomein heeft zoals "user.domein.nl" al deze subdomeinen dienen gewoon naar één bestand (search_user.php) gestuurd te worden. In dat bestand wordt dan gecontroleerd of de gebruiker bestaat en daar wordt alle data van hem/haar dan ingeladen. Het laatste deel werkt al, alleen het instellen van de subdomeinen werkt nog niet helemaal lekker.

Het werkt op het moment wel als ik "user.domein.nl" intik, maar als ik dan naar "user.domein.nl/page2/" wil, wordt diegene niet meer naar search_user.php gestuurd, maar naar mijn index.php. Ik heb echt al veel tutorials gelezen, maar heb nog nergens een oplossing voor mijn probleem gevonden ... Weet iemand hoe ik dit kan oplossen? De code die ik op het moment heb is:

  1. RewriteEngine On
  2.  
  3. RewriteCond %{HTTP_HOST} !^www\.domein\.nl?$
  4. RewriteCond %{HTTP_HOST} ^([^.]+)\.domein\.nl?$
  5. RewriteRule ^$ /search_user.php?user_name=%1


Alvast bedankt

7 antwoorden

Gesponsorde links
Offline aapjuh - 06/09/2009 15:52 (laatste wijziging 06/09/2009 15:53)
Avatar van aapjuh Lid RewriteCond %{HTTP_HOST} ^([^.]+)\.domein\.nl?$

Je zegt daar dat hij alleen naar search_users.php moet wanneer er NIETS achter .nl staat. Dus dan moet je aanpassen in bijv:

RewriteCond %{HTTP_HOST} ^([^.]+)\.domein\.nl/?(a-zA-Z0-9-_/)*$
RewriteRule ^$ /search_user.php?user_name=$1&?url=$2

Nu zet je alles wat achter .nl/ staat in $_GET['url']
Dan kun je in search_user.php daar verder mee werken

dit werkt alleen als wat achter .nl/ staat bestaat uit a t/m z A t/m Z 0 t/m 9 - of _
Offline bertenz - 06/09/2009 16:17
Avatar van bertenz HTML beginner @aapjuh: hartstikke bedankt voor jouw hulp.
Het werkt nu echter alleen als de get in de vorm "get1=pagina&get2=...." staat. Als ik dus een vriendelijke URL wil gebruiken, werkt dit niet. Bovendien wordt de get "url" leeg gelaten met deze code... Iemand een idee wat ik moet veranderen om ook url's als "/pagina/gastenboek/" te kunnen gebruiken?
Offline aapjuh - 06/09/2009 16:27
Avatar van aapjuh Lid Als jij naar user.domein.nl/pagina/gastenboek/ gaat, doet htaccess dat omzetten naar:
domein.nl/search_user.php?user_name=naam&url=pagina/gastenboek

Als het goed is.
Offline bertenz - 06/09/2009 17:49 (laatste wijziging 06/09/2009 17:50)
Avatar van bertenz HTML beginner Helaas werkt het niet. Als ik nu naar user.domein.nl/pagina/gastenboek/ ga, dan word ik doorgestuurd naar mijn gewone index.php

De code die ik nu heb is
  1. RewriteEngine On
  2.  
  3. RewriteCond %{HTTP_HOST} !^www\.domein\.nl?$
  4. RewriteCond %{HTTP_HOST} ^([^.]+)\.domein\.nl/?(a-zA-Z0-9-_/)*$
  5. RewriteRule ^$ /search_user.php?user_name=%1&url=$1


voor de variabele "user_name" moest ik %1 gebruiken ipv $1. Verder snap ik echt niet wat er fout gaat (Ben ook niet bepaald goed met htaccess). Ik heb voor de $1 die achter "url" staat ook de waarden $2 en %2 gebruikt, maar dat hielp niks.

Is het trouwens niet mogelijk om per aantal gegevens in de URL een aparte rewrite-rule te maken? Net als bij mijn andere regels. Dus dat je hetzelfde idee als dit krijgt:
  1. RewriteRule ^(.*)/(.*)/(.*)/$ index.php?get1=$1&get2=$2&get3=$3 [L]
  2. RewriteRule ^(.*)/(.*)/$ index.php?get1=$1&get2=$2 [L]
  3. RewriteRule ^(.*)/$ index.php?get1=$1 [L]
Offline Thomas - 08/09/2009 16:40
Avatar van Thomas Moderator Je zou het ook via een 404 pagina kunnen oplossen, dan ben je in principe niet gebonden aan .htaccess / mod_rewrite.

Moet je natuurlijk wel opletten dat je de 404-header weer terugverandert, anders worden alle pagina's met een 404 header geserveerd volgens mij :].
Offline ArieMedia - 08/09/2009 16:50
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
FangorN schreef:
Je zou het ook via een 404 pagina kunnen oplossen, dan ben je in principe niet gebonden aan .htaccess / mod_rewrite.

Moet je natuurlijk wel opletten dat je de 404-header weer terugverandert, anders worden alle pagina's met een 404 header geserveerd volgens mij :].
Ik heb een soortgelijk iets en dat is iets wat je gewoon niet wil. Een 404-pagina zit je nooit op te wachten.
Offline Dani - 01/10/2009 11:21 (laatste wijziging 01/10/2009 11:23)
Avatar van Dani PHP gevorderde gewoon in virtual host configuratie van je webserver een domein *.mijndomein.com instellen en niet via mod rewrite, dat is gewoon onzin om zoiets met mod_rewrite te doen.
Je kan dan gewoon in php kijken wat er voor de domeinnaam staat, kijk eens naar $_SERVER je zal daar alles vinden wat je nodig hebt om jouw 'subdomein' uit te lezen ;)

PS : uiteraard moeten je DNS instellingen ook juist zijn en zal je daar ook een wildcard (*) moeten gebruiken
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.169s