[apache] RewriteRule komt in een loop?

Pagina: 1
Acties:

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 01-01 10:54
Ik wil graag dat mensen die van een bepaalde site afkomen, doorgestuurd worden naar een ander deel van de site. Ik dacht dit mooi te kunnen oplossen met een .htaccess:
code:
1
2
3
4
RewriteEngine On
RewriteCond %{HTTP_REFERER}     ^http://([a-z0-9-]+\.)*st-maartenscollege.nl/ [NC,OR]
RewriteCond %{HTTP_REFERER}     ^http://([a-z0-9-]+\.)*nog_een_domein.nl/ [NC]
RewriteRule ^(.*)$              http://bboit.basbennebroek.nl/index.php [R,L]

Als ik nu echter vanf bijv. hier op het linkje onderaan klik, krijg ik een error van Firefox: "De verwijzingslimiet voor deze URL is overschreden." (IE geeft geen error maar geeft gewoon geen pagina). Volgens enkelen op GoT zou dat betekenen dat de RewriteEngine in een loop komt, maar hoe komt dat dan?

Ik heb al vanalles geprobeerd ipv ^(.*)$ zoals /* (zelfde error), ^/index\.php (wordt niet doorgestuurd) en http://basbennebroek.nl (wordt ook niet doorgestuurd). De Apache errorlog geeft ook geen informatie. mod_rewrite staat wel gewoon aan, andere rewrite-htaccessen werken wel gewoon.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Hoewel ik niet zeker weet of de [R] parameter voor een subrequest zorgt, helpt het wellicht om een NS parameter toe te voegen, wat staat voor 'no-subrequest'. Dit voorkomt een extra processing van de rewriterules. Ik denk eigenlijk dat dat niet helpt, maar het is het proberen iig waard...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 01-01 10:54
Nope, helaas :)

Maar dat ^(.*)$ is wel wat het zou moeten zijn?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Hm, ik zie het al, de browser blijft de Referer meesturen ongeacht de Location header die hij terugkrijgt van de browser. Opzich is dat ook zo gek nog niet. Ik ken het HTTP niet uit mijn hoofd, maar da's opzich expected behaviour.

Je moet dus even zorgen dat die rewriterules niet gelden als de hostname die opgevraagd is al bboit.basbennebroek.nl is. Je kunt dit doen door een extra RewriteCond op basis van HTTP_HOST te doen, maar het is natuurlijk netter om te zorgen dat die hele rewrite niet in de config van 't subdomein voorkomt.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 01-01 10:54
hmm, er staat geen .htaccess in de map waar het subdomein heen gaat, maar aangezien ik niet precies weet hoe subdomeinen werken (dat gaat allemaal via DirectAdmin) ga ik wel even een extra RewriteCond toevoegen :)

edit:
drm, je bent geweldig _/-\o_ Het werkt nu met de volgende code:
code:
1
2
3
4
5
RewriteEngine On
RewriteCond %{HTTP_HOST}        !^bboit\.basbennebroek\.nl [NC]
RewriteCond %{HTTP_REFERER}     ^http://([a-z0-9-]+\.)*st-maartenscollege.nl/ [NC,OR]
RewriteCond %{HTTP_REFERER}     ^http://([a-z0-9-]+\.)*nog_een_domein.nl/ [NC]
RewriteRule ^(.*)$              http://bboit.basbennebroek.nl/index.php [R,L,NS]

[ Voor 52% gewijzigd door The Evil Brain op 10-01-2005 19:14 . Reden: opgelost! ]