Bekijk Volledige Versie : subdomeinen dmv apache rewriting
Ik heb een domein met wildcard, nu heb ik een aantal subdomeinen
aangemaakt die met een bepaalde map gekoppeld zijn
Dit heb ik als volgende gedaan
RewriteCond %{HTTP_HOST} sub1.domein.tld$
RewriteCond %{REQUEST_URI} !^/sub1/
RewriteRule (.*) sub1/$1 [L]
Wat ik nu nog zou willen is dat alle andere subdomeinen waarvoor ik geen
aparte rewrite regels heb allemaal naar dezelfde map gelinkt worden.
Dit heb ik al geprobeerd met volgende regels:
RewriteCond %{HTTP_HOST} !^www.domein.tld$
RewriteRule (.*) subdom/subdom.php [L]
Dit lukt ook, behalve als ik een subdomein opvraag dat al eerder in
..htaccess voorkomt (zoals sub1.domein.tld bv), dan krijg ik een Internal
server error (500)
Heeft iemand een idee hoe ik dit kan oplossen?
mvg
google@phaedro.com
23/06/05, 23:15
GeertS schreef:
-knip
> Dit heb ik al geprobeerd met volgende regels:
> RewriteCond %{HTTP_HOST} !^www.domein.tld$
moet dit niet zijn !domein.tld$
(en deze regel dan als laatste in je .htaccess of httpd.conf)
?
> RewriteRule (.*) subdom/subdom.php [L]
>
> Dit lukt ook, behalve als ik een subdomein opvraag dat al eerder in
> .htaccess voorkomt (zoals sub1.domein.tld bv), dan krijg ik een Internal
> server error (500)
>
log ?
php subdom/subdom.php geeft geen error ?
--
T.
www.phaedro.com
serious software engineering.
Daniel Tryba
23/06/05, 23:35
GeertS <geert.serneels.GeenSpam@gmx.net.invalid> wrote:
[knip]
> Heeft iemand een idee hoe ik dit kan oplossen?
Ik heb er niet echt naar gekeken aangezien ik me afvraag waarom je het
uberhaupt op deze manier doet? Het aanmaken van virtual hosts voor de
bekende domeinen met een wildcard voor de overigen is IMHO een veel
makkelijkere oplossing.
Daniel Tryba wrote:
> GeertS <geert.serneels.GeenSpam@gmx.net.invalid> wrote:
> [knip]
>
>>Heeft iemand een idee hoe ik dit kan oplossen?
>
>
> Ik heb er niet echt naar gekeken aangezien ik me afvraag waarom je het
> uberhaupt op deze manier doet? Het aanmaken van virtual hosts voor de
> bekende domeinen met een wildcard voor de overigen is IMHO een veel
> makkelijkere oplossing.
>
Ik heb geen eigen server of de mogelijkheid om virtual hosts aan ta
maken. (ik kan wel aanpassingen doen in de dns file maar daar ben ik
hier waarschijnlijk niets mee). Dus ik kan enkel via .htaccess werken
(en virtual hosts moeten in de httpd.conf dacht ik).
Vandaar het probleem dus...
gs
google@phaedro.com wrote:
>
> GeertS schreef:
> -knip
>
>>Dit heb ik al geprobeerd met volgende regels:
>> RewriteCond %{HTTP_HOST} !^www.domein.tld$
>
> moet dit niet zijn !domein.tld$
> (en deze regel dan als laatste in je .htaccess of httpd.conf)
> ?
Ik zie eigelijk niet in waarom, heb het geprobeert en blijkt ook niet de
oplossing. Met www erbij heb ik gedaan om dat de 'hoofdsite' onder dat
domein draait en die moet uiteraard niet geforward worden naar ergens
anders, het is in de map van die site dat de .htaccess staat vanwaar de
andere subdomeinen moet behandeld worden.
>
>
>> RewriteRule (.*) subdom/subdom.php [L]
>>
>>Dit lukt ook, behalve als ik een subdomein opvraag dat al eerder in
>>.htaccess voorkomt (zoals sub1.domein.tld bv), dan krijg ik een Internal
>> server error (500)
>>
>
>
> log ?
Die moet ik nog eens proberen te raadplegen, kan je fouten bij Rewriting
ook terugvinden in de logs?
> php subdom/subdom.php geeft geen error ?
nee, er wordt dan ook geen subdomein meegegeven waar iet moet mee
gebeuren. Het script werkt zeker, ik heb er een aantal subdomeinen aan
gelinkt, maar heb geen zin om elk mogelijk subdomein eraan te linken,
wordt onoverzichtelijk dan, veel werk en een zeer grote .htaccess.
gs
Michiel de Roo
26/06/05, 21:25
> Die moet ik nog eens proberen te raadplegen, kan je fouten bij Rewriting
> ook terugvinden in de logs?
als je RewriteLog gebruikt wel...
google@phaedro.com
26/06/05, 21:25
Dag,
- knip -
> Dit heb ik als volgende gedaan
> RewriteCond %{HTTP_HOST} sub1.domein.tld$
> RewriteCond %{REQUEST_URI} !^/sub1/
> RewriteRule (.*) sub1/$1 [L]
- knip -
> Dit heb ik al geprobeerd met volgende regels:
> RewriteCond %{HTTP_HOST} !^www.domein.tld$
> RewriteRule (.*) subdom/subdom.php [L]
>
Wat je vlgs. mij wilt? :
sub.domein.tld/file.php --> WEBROOT/sub/file.php
subXXX.domein.tld/file.php --> WEBROOT/subdom/subdom.php
Wat doen die '!' in je RewriteCond ? (Die inverteren/ontkennen de
match-conditie)
1e x : RewriteCond %{REQUEST_URI} !^/sub1/
Dus alleen als /sub/ *niet* ook in de request-URI voorkomen matcht de
rule
2e x : RewriteCond %{HTTP_HOST} !^www.domein.tld$
Deze rule matcht altijd, behalve als de HTTP_HOST precies
www.domein.tld is.
???
Bij regel1: dus sub.domein.tld/sub/file.php wordt *niet*
geparsed/rewritten?
Dit snap ik wel, want dit is voor de 'vervolgrequests' die al relatief
aan /sub1/ zijn .
Regel2 : dus alle requests (behalve www.) worden herschreven naar
subdom/subdom.php ?
B.v. ook:
sub.domein.tld/file.php --> WEBROOT/sub/file.php
User klikt op file2.php
sub.domein.tld/sub/file2.php --> regel1 mist --> regel2 vuurt -->
WEBROOT/subdom/subdom.php ?
De logs bevatten geen specifieke info over rewrites, wel mocht je php
de foutmelding veroorzaken en iha (weet ik niet zeker) bij foute
rewrite rules wel extra info.
Verder: wellicht overbodig, maar in
http://httpd.apache.org/docs/misc/rewriteguide.html
staan wel dingen over mod_rewrite en virtual hosts die je verder zouden
moeten helpen.
Gr.
T.
ik heb ook een domein met DNS subdomeintjes, maar ik weet niet wat het
probleem is?
ik heb alle domeintjes in mijn virtualhost.conf gemaakt, en op de HD ook
die domeintjes gelinkt.
ok, ik werk dan wel met freesco als router en die heeft een interne DNS
server ,die ik nog eens kan configureren, en dat werkt perfect.
ik geef bij mijn DNS boer aan dat de dns entries naar mijn IP moeten, en
vandaar gaat het vanzelf als iemand de link in typed
GeertS wrote:
> Daniel Tryba wrote:
>
>> GeertS <geert.serneels.GeenSpam@gmx.net.invalid> wrote:
>> [knip]
>>
>>> Heeft iemand een idee hoe ik dit kan oplossen?
>>
>>
>>
>> Ik heb er niet echt naar gekeken aangezien ik me afvraag waarom je het
>> uberhaupt op deze manier doet? Het aanmaken van virtual hosts voor de
>> bekende domeinen met een wildcard voor de overigen is IMHO een veel
>> makkelijkere oplossing.
>>
> Ik heb geen eigen server of de mogelijkheid om virtual hosts aan ta
> maken. (ik kan wel aanpassingen doen in de dns file maar daar ben ik
> hier waarschijnlijk niets mee). Dus ik kan enkel via .htaccess werken
> (en virtual hosts moeten in de httpd.conf dacht ik).
> Vandaar het probleem dus...
>
> gs
spatieman wrote:
> GeertS wrote:
>
>> Daniel Tryba wrote:
>>
>>> GeertS <geert.serneels.GeenSpam@gmx.net.invalid> wrote:
>>> [knip]
>>>
>>>> Heeft iemand een idee hoe ik dit kan oplossen?
>>>
>>>
>>>
>>>
>>> Ik heb er niet echt naar gekeken aangezien ik me afvraag waarom je het
>>> uberhaupt op deze manier doet? Het aanmaken van virtual hosts voor de
>>> bekende domeinen met een wildcard voor de overigen is IMHO een veel
>>> makkelijkere oplossing.
>>>
>> Ik heb geen eigen server of de mogelijkheid om virtual hosts aan ta
>> maken. (ik kan wel aanpassingen doen in de dns file maar daar ben ik
>> hier waarschijnlijk niets mee). Dus ik kan enkel via .htaccess werken
>> (en virtual hosts moeten in de httpd.conf dacht ik).
>> Vandaar het probleem dus...
>>
>> gs
> ik heb ook een domein met DNS subdomeintjes, maar ik weet niet wat het
> probleem is?
> ik heb alle domeintjes in mijn virtualhost.conf gemaakt, en op de HD ook
> die domeintjes gelinkt.
>
> ok, ik werk dan wel met freesco als router en die heeft een interne DNS
> server ,die ik nog eens kan configureren, en dat werkt perfect.
> ik geef bij mijn DNS boer aan dat de dns entries naar mijn IP moeten, en
> vandaar gaat het vanzelf als iemand de link in typed
Ik spreek niet over een eigen server ofzo, ik heb gewoon een webhosting
account met dns wildcard mogelijkheid, .htaccess etc.
gs
google@phaedro.com wrote:
>
> GeertS schreef:
> -knip
>
>>Dit heb ik al geprobeerd met volgende regels:
>> RewriteCond %{HTTP_HOST} !^www.domein.tld$
>
> moet dit niet zijn !domein.tld$
> (en deze regel dan als laatste in je .htaccess of httpd.conf)
> ?
>
>
>> RewriteRule (.*) subdom/subdom.php [L]
>>
>>Dit lukt ook, behalve als ik een subdomein opvraag dat al eerder in
>>.htaccess voorkomt (zoals sub1.domein.tld bv), dan krijg ik een Internal
>> server error (500)
>>
>
>
> log ?
mod_rewrite: maximum number of internal redirects reached. Assuming
configuration error. Use 'RewriteOptions MaxRedirects' to increase the
limit if neccessary.
Jan Ehrhardt
27/06/05, 18:15
GeertS in nl.internet.www.server-side (Sun, 19 Jun 2005 16:30:16 GMT):
>Ik heb een domein met wildcard, nu heb ik een aantal subdomeinen
>aangemaakt die met een bepaalde map gekoppeld zijn
>Dit heb ik als volgende gedaan
> RewriteCond %{HTTP_HOST} sub1.domein.tld$
> RewriteCond %{REQUEST_URI} !^/sub1/
> RewriteRule (.*) sub1/$1 [L]
>
>Wat ik nu nog zou willen is dat alle andere subdomeinen waarvoor ik geen
>aparte rewrite regels heb allemaal naar dezelfde map gelinkt worden.
>
>Dit heb ik al geprobeerd met volgende regels:
> RewriteCond %{HTTP_HOST} !^www.domein.tld$
> RewriteRule (.*) subdom/subdom.php [L]
Probeer dit eens:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub1.domein.tld$
RewriteCond %{REQUEST_FILENAME} !.*/sub1/.*
RewriteRule !^sub1/ - [C]
RewriteRule (.*) http://%{HTTP_HOST}/sub1/$1 [L]
RewriteCond %{HTTP_HOST} ^sub2.domein.tld$
RewriteCond %{REQUEST_FILENAME} !.*/sub2/.*
RewriteRule !^sub2/ - [C]
RewriteRule (.*) http://%{HTTP_HOST}/sub2/$1 [L]
RewriteCond %{HTTP_HOST} !^sub1.domein.tld$
RewriteCond %{HTTP_HOST} !^sub2.domein.tld$
RewriteRule !^subdom/ - [C]
RewriteRule (.*) http://%{HTTP_HOST}/subdom/$1 [L]
</IfModule>
Vrij naar een eigen config. Niet getest.
Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/
Jan Ehrhardt wrote:
> GeertS in nl.internet.www.server-side (Sun, 19 Jun 2005 16:30:16 GMT):
>
>
>>Ik heb een domein met wildcard, nu heb ik een aantal subdomeinen
>>aangemaakt die met een bepaalde map gekoppeld zijn
>>Dit heb ik als volgende gedaan
>> RewriteCond %{HTTP_HOST} sub1.domein.tld$
>> RewriteCond %{REQUEST_URI} !^/sub1/
>> RewriteRule (.*) sub1/$1 [L]
>>
>>Wat ik nu nog zou willen is dat alle andere subdomeinen waarvoor ik geen
>>aparte rewrite regels heb allemaal naar dezelfde map gelinkt worden.
>>
>>Dit heb ik al geprobeerd met volgende regels:
>> RewriteCond %{HTTP_HOST} !^www.domein.tld$
>> RewriteRule (.*) subdom/subdom.php [L]
>
>
> Probeer dit eens:
>
> <IfModule mod_rewrite.c>
> RewriteEngine on
> RewriteCond %{HTTP_HOST} ^sub1.domein.tld$
> RewriteCond %{REQUEST_FILENAME} !.*/sub1/.*
> RewriteRule !^sub1/ - [C]
> RewriteRule (.*) http://%{HTTP_HOST}/sub1/$1 [L]
>
> RewriteCond %{HTTP_HOST} ^sub2.domein.tld$
> RewriteCond %{REQUEST_FILENAME} !.*/sub2/.*
> RewriteRule !^sub2/ - [C]
> RewriteRule (.*) http://%{HTTP_HOST}/sub2/$1 [L]
>
> RewriteCond %{HTTP_HOST} !^sub1.domein.tld$
> RewriteCond %{HTTP_HOST} !^sub2.domein.tld$
> RewriteRule !^subdom/ - [C]
> RewriteRule (.*) http://%{HTTP_HOST}/subdom/$1 [L]
> </IfModule>
>
> Vrij naar een eigen config. Niet getest.
>
> Jan
Als ik in het laatste blok (wat al de rest dus moet behandelen) de reeds
gebruikte subdomeinen uitsluit lukt het wel. Ik had eigelijk gedacht
dat niet nodig zou zijn omdat die [L] toch dient om geen verdere
rewriterules uit te voeren?
Alvast bedankt allemaal voor de hulp..
gs
Jan Ehrhardt
28/06/05, 15:15
GeertS in nl.internet.www.server-side (Mon, 27 Jun 2005 19:33:08 GMT):
>Als ik in het laatste blok (wat al de rest dus moet behandelen) de reeds
> gebruikte subdomeinen uitsluit lukt het wel. Ik had eigelijk gedacht
>dat niet nodig zou zijn omdat die [L] toch dient om geen verdere
>rewriterules uit te voeren?
Een rewriterule werkt (dacht ik) zodanig, dat je de oorspronkelijke URL
neemt, die herschrijft en dan het resultaat daarvan weer aan Apache
voert. Als je dan bijvoorbeeld niet test of je /subdom/ al toegevoegd
hebt kom je in een eindeloze loop.
>Alvast bedankt allemaal voor de hulp..
'Alvast bedankt' voor iets waar je nu geen hulp meer voor nodig hebt?
Vreemd.
Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/
google@phaedro.com
29/06/05, 12:15
> Als ik in het laatste blok (wat al de rest dus moet behandelen) de reeds
> gebruikte subdomeinen uitsluit lukt het wel. Ik had eigelijk gedacht
> dat niet nodig zou zijn omdat die [L] toch dient om geen verdere
> rewriterules uit te voeren?
Zoals Jan zei: en wordt het eindresultaat na Rewrite opnieuw door
Apache verwerkt.
Verder kwam ik dit tegen: RewriteLog
"/usr/local/var/apache/logs/rewrite.log"
Gr.,
T.