Toon posts:

[Apache] mod_rewrite-module Rewrite in httpd.conf probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

ik ben momenteel ff bezig om wat rewriterules in een Apache server te configureren,
ben er al een paar dagen mee bezig maar krijg het niet werkende zoals ik zou willen.

Het is uiteindelijk de bedoeling dat er op basis van het bestaan van een aantal cookies de user geredirect wordt. Er zijn drie cookies die aanwezig moeten zijn, indien één van de drie niet aanwezig is moet de gebruiker naar een splash-page geredirect worden. Indien ze alledrie aanwezig zijn moet de user naar een sub-site gestuurd worden, maar... de querystring moet gewoon doorgegeven worden, en er moet op basis van de inhoud of naam van de cookie een deel aan de querystring toegevoegd worden.

Wat heb ik geprobeerd...

code:
1
2
rewriteCond %{HTTP_cookie} BE
rewriteRule ^/test(.*)$ /BLA$1?bla=bla [L,R=301]

conclusie: de bestaande qs wordt niet doorgegeven
.../test/ ==> /BLA/?bla=bla
.../test/?test=test ==> /BLA/?bla=bla

en hoe kan ik de QSA hierin verwerken?
want als ik die er tussen zet doet hij helemaal niks.
code:
1
2
3
rewriteCond %{HTTP_cookie} BE
rewriteCond %{QUERY_STRING} ^boe=boe
rewriteRule ^/test(.*)$ /BLA$1?bla=bla [QSA,L,R=301]


en hoe is het mogelijk om de naam of inhoud van de cookie in de querystring te zetten?


Alvast heel erg bedankt voor de hulp :)

GreetZ
T

Verwijderd

Topicstarter
oké het probleem dat de oude querystring niet wordt meegegeven is opgelost...

code:
1
2
rewriteCond %{HTTP_cookie} BE
rewriteRule ^/test(.*)$ /BLA$1?bla=bla [QSA,R,L]


nu nog de cookie-vars in de QS :)


maar vraag me nog altijd af waarom de volgende zin het niet doet
code:
1
#rewriteCond %{QUERY_STRING} ^boe=boe

Verwijderd

Topicstarter
update :)

code:
1
2
3
4
rewriteCond %{HTTP_COOKIE} lang=(.*)
rewriteCond %{HTTP_COOKIE} type=(.*)
rewriteCond %{HTTP_COOKIE} site=(.*)
rewriteRule ^/test(.*)$ http://localhost/test2$1?%1 [QSA,R,L,NE,NC]


met deze rewriterules gaat hij kijken of de drie cookies aanwezig zijn...
als ze er alledrie zijn gaat hij rewriten

input:
code:
1
http://localhost/test/index.html?ditiseentest=owja


output:
code:
1
http://localhost/test2/index.html?FR; type=user2; lang=fre&ditiseentest=owja



vraag 1:
hoe kan ik de variabelen van de cookie netjes in de querystring krijgen?

vraag 2:
is het mogelijk om te rewriten naar 'zichzelf' zonder dat je in een oneindige loop komt? Het zou de bedoeling zijn dat alles van
code:
1
.../test/*?*
gecontroleerd wordt op cookies en naar
code:
1
.../test/*?site=*&type=*&lang=*&*
weggeschreven wordt.

Verwijderd

Topicstarter
huh?

nu snap ik ff iets helemaal niet meer (dezelfde rewrites als eerder gepost)
code:
1
2
3
4
rewriteCond %{HTTP_COOKIE} lang=(.*)
rewriteCond %{HTTP_COOKIE} type=(.*)
rewriteCond %{HTTP_COOKIE} site=(.*)
rewriteRule ^/test(.*)$ http://localhost/test2$1?%1 [QSA,R,L,NE,NC]


input:
code:
1
http://localhost/test/index.html?ditiseentest=owja


output:
code:
1
http://localhost/test2/index.html?FR; type=user2&ditiseentest=owja


terwijl ik gisteren/vanmorgen dit als output had:
code:
1
http://localhost/test2/index.html?FR; type=user2; lang=fre&ditiseentest=owja


ondanks dat alle cookies aanwezig zijn...

wat zie ik over het hoofd?


Log (level 5):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (2) init rewrite engine with requested uri /test/index.html
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (3) applying pattern '^/test(.*)$' to uri '/test/index.html'
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (4) RewriteCond: input='lang=fre; site=FR; type=user2' pattern='lang=(.*)' => matched
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (4) RewriteCond: input='lang=fre; site=FR; type=user2' pattern='type=(.*)' => matched
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (4) RewriteCond: input='lang=fre; site=FR; type=user2' pattern='site=(.*)' => matched
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (2) rewrite '/test/index.html' -> 'http://localhost/test2/index.html?FR; type=user2'
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (3) split uri=http://localhost/test2/index.html?FR; type=user2 -> uri=http://localhost/test2/index.html, args=FR; type=user2&ditiseentest=owja
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (2) explicitly forcing redirect with http://localhost/test2/index.html
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab2258/initial] (1) redirect to http://localhost/test2/index.html?FR; type=user2&ditiseentest=owja [REDIRECT/302]
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab0250/initial] (2) init rewrite engine with requested uri /test2/index.html
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab0250/initial] (3) applying pattern '^/test(.*)$' to uri '/test2/index.html'
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab0250/initial] (4) RewriteCond: input='' pattern='lang=(.*)' => not-matched
127.0.0.1 - - [27/Aug/2008:13:54:49 +0200] [localhost/sid#9d5150][rid#3ab0250/initial] (1) pass through /test2/index.html

  • _H_G_
  • Registratie: September 2002
  • Nu online
Moet dat niet het volgende zijn?

code:
1
2
3
rewriteCond %{HTTP_COOKIE} lang=(.*);
rewriteCond %{HTTP_COOKIE} type=(.*);
rewriteCond %{HTTP_COOKIE} site=(.*);


Je wil toch alleen de waarde hebben (bijv. alleen FR) en niet alles wat er achter komt?