Toon posts:

[mod_rewrite] subdomeinen probleempje?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer op m'n server subdomeinen aan de gang te krijgen. Ik heb een A wildcard in m'n dns gezet en de volgende code in m'n httpd.conf:

code:
1
2
3
4
5
6
7
ServerAlias domain.com *.domain.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}domain.com$
RewriteRule ^(.*)$ /script/go.php?site=%3 [L]
</IfModule>


Dat werkt mooi. Iemand die naar:
http://test.domain.com/ gaat word intern geredirect naar /script/go.php?site=test

Maar nu heb ik een probleem.
Ik heb bijvoorbeeld een url:
http://test.domain.com/articles/2323
Deze zou vertaalt moeten worden naar:
/script/go.php?site=test&cat=articles&id=2323

Maar ik als ik een rewriterule boven de laatste rewriterule zet dan is %3 helemaal leeg, dus:

code:
1
2
3
4
5
6
7
8
ServerAlias domain.com *.domain.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}domain.com$
RewriteRule ^(.*)/(.*)$ /script/go.php?site=%3&cat=$1&id=$2 [L]
RewriteRule ^(.*)$ /script/go.php?site=%3 [L]
</IfModule>


Heeft iemand enig idee hoe het wel moet?

Dank u. _/-\o_

[ Voor 4% gewijzigd door Verwijderd op 27-04-2005 14:04 ]


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je geeft met domain.com$ al aan dat er niets meer achter mag komen.
Het $ teken is EOL dus daar zou je misschien nog een (.*)$ achter kunnen zetten.

Blog [Stackoverflow] [LinkedIn]


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 04-05 09:32
Waarom redirect je niet gewoon ALLES naar go.php zonder enige parameters en lees je binnen go.php je REQUEST_URI uit en zet je op basis daarvan je variabelen?

Lijkt me veel simpeler, en je hoeft niet elke keer je httpd.conf aan te passen.

Verwijderd

Topicstarter
Wolfboy schreef op woensdag 27 april 2005 @ 14:07:
Je geeft met domain.com$ al aan dat er niets meer achter mag komen.
Het $ teken is EOL dus daar zou je misschien nog een (.*)$ achter kunnen zetten.
Als je goed kijkt zie ik dat ik HTTP_HOST deze heeft volgens mij geen query informatie ;)

Verwijderd

Topicstarter
beetle71 schreef op woensdag 27 april 2005 @ 15:06:
Waarom redirect je niet gewoon ALLES naar go.php zonder enige parameters en lees je binnen go.php je REQUEST_URI uit en zet je op basis daarvan je variabelen?

Lijkt me veel simpeler, en je hoeft niet elke keer je httpd.conf aan te passen.
Omdat ik het via mod_rewrite will doen en intern gaat het allemaal wat efficienter. Tevens is het maar 1 keer aanpassen en klaar.

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Verwijderd schreef op woensdag 27 april 2005 @ 15:21:
[...]

Als je goed kijkt zie ik dat ik HTTP_HOST deze heeft volgens mij geen query informatie ;)
Je hebt gelijk idd, kzat niet goed op te letten |:(

Is het niet een idee om {QUERY_STRING} gewoon mee te nemen erbij?

Blog [Stackoverflow] [LinkedIn]


Verwijderd

Topicstarter
Wolfboy schreef op woensdag 27 april 2005 @ 16:05:
[...]

Je hebt gelijk idd, kzat niet goed op te letten |:(

Is het niet een idee om {QUERY_STRING} gewoon mee te nemen erbij?
Nope ;) want QUERY_STRING bevat geen HOST informatie en die heb je wel nodig anders kun je het subdomein niet extracten.

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Ik bedoelde %{QUERY_STRING} gewoon toevoegen aan de achterkant maar dan zal je het nogsteeds moeten oplossen in de code.
Dus zoiets als dit: RewriteRule ^(.*)$ script.php?args=%{QUERY_STRING}

Probeer dit dan eens, hier werkt het iig prima.
(kheb alleen het relevante gedeelte meegenomen, de rest mag je er zelf bij zetten)
code:
1
2
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain.com$
RewriteRule ^(.*)/(.*)$ /script/go.php?site=%2&cat=$1&id=$2 [L]

Blog [Stackoverflow] [LinkedIn]


Verwijderd

Topicstarter
Wolfboy schreef op woensdag 27 april 2005 @ 17:35:
Ik bedoelde %{QUERY_STRING} gewoon toevoegen aan de achterkant maar dan zal je het nogsteeds moeten oplossen in de code.
Dus zoiets als dit: RewriteRule ^(.*)$ script.php?args=%{QUERY_STRING}
Maar dat wil ik liever niet :X
Probeer dit dan eens, hier werkt het iig prima.
(kheb alleen het relevante gedeelte meegenomen, de rest mag je er zelf bij zetten)
code:
1
2
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain.com$
RewriteRule ^(.*)/(.*)$ /script/go.php?site=%2&cat=$1&id=$2 [L]
Klopt, maar dat had ik ook, alleen als je nu een 2de rewrite rule er neer zet dan is bij mij %3 leeg en bij jouw %2, probeer maar eens.

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Ah was dat het probleem, afaik kan je maar 1 rewriterule per lading conditions zetten.

Als je de conditions voor die rule apart zet dan zal het waarschijnlijk wel werken :)

Blog [Stackoverflow] [LinkedIn]


Verwijderd

Topicstarter
Je hebt helemaal gelijk, ik was in veronderstelling dat je meerdere rewriterules kon gebruiken na een rewritecond, want ik had vroeger een hele rij rewriterules maar dat was toen zonder ene rewritecond.

Bedankt! :>
Pagina: 1