[HTML/apache] mod_rewrite i.c.m. base-tag zorgt voor errors

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Henridv
  • Registratie: Januari 2008
  • Niet online
Sinds kort ben ik verhuisd naar een nieuwe webhost, waarbij ik nu duidelijk mijn apache error_log kan bekijken. Daardoor heb ik gemerkt dat ik ongeloofelijk veel "File does not exist" errors krijg (sinds begin oktober zit ik al aan 880.14 KB aan dit soort errors). Dit vond ik raar want ieder bestand dat niet gevonden werd, werd blijkbaar toch gevonden want mijn pagina's werden correct weergegeven in verschillende browsers en platformen.

Volgens mij heeft dit allemaal iets te maken met het gebruik van de <base>-tag die door Internet Explorer niet goed wordt gebruikt. Ik heb dit namelijk eens onderzocht en ik kon zelf enkel die errors genereren door met IE naar die bewuste pagina's te surfen.
Wat overigens vreemd is want ik krijg bijvoorbeeld een error dat het css-bestand niet gevonden is, maar toch wordt de pagina mooi weergegeven..

Ik gebruik ook mod_rewrite om "mooie" URL's te maken. Op de pagina ***.be/nieuws/29/ krijg ik bijvoorbeeld deze error:
code:
1
[ *datum* ] [error] [client ***] File does not exist: /***/public_html/nieuws/29, referer: http://www.***.be/nieuws/29/

Ik laat ook mijn 404-pagina een mail sturen met wat informatie. En bij deze error krijg ik bijvoorbeeld deze mail:
code:
1
/nieuws/29/css/style.css, was found on this page: http://www.***.be/nieuws/29/!

Waarbij het eerst de REQUEST_URI is en het tweede de HTTP_REFERER.

Ik heb al geprobeerd om mijn <base>-tag weg te laten, maar dat werkt helemaal niet aangezien mijn URI's relatief zijn en wanneer ik mij op pagina ***.be/nieuws/29/ bevindt, zal een link (href="contact/") mij naar ***.be/nieuws/29/contact/ sturen.

Wat ik ook al heb geprobeerd is om iedere URI met een slash te laten beginnen en dan heeft het gebruik van <base> geen zin. Maar dan kan ik mijn site niet meer developen, want die bevindt zich in een submap. Dus dat vindt ik geen goeie oplossing.

Ik hoop dat iemand mij kan helpen.
Als ik niet duidelijk genoeg ben in mijn startpost, wil ik heel graag meer informatie geven :) .

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Laat eens een stukje HTML zien dat zorgt voor foutmeldingen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Niet alleen de HTML maar ook de relevante stukjes uit .htaccess graag. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Het is een bekend probleem en een 'bug' in IE. In het kort komt het er op neer dat IE probeert te gokken welke bestanden hij op zal moeten halen en daarvoor scanned hij snel door de pagina heen op zoek naar mogelijke URL's. Die gaat hij alvast proberen op te halen. 'Later' wordt de pagina ook daadwerkelijk geinterpreteerd en komt IE er achter dat hij de base tag toe moet passen. Alle ge-prefetchte content wordt dan opnieuw opgehaald, maar dan vanaf de juiste URL.

In het kort komt het er op neer dat de bezoeker hier helemaal niks van merkt. De juiste bestanden worden gewoon opgehaald en de pagina wordt gewoon correct weer gegeven. Voor de beheerders is het wel vervelend. Het zorgt voor een lading niet terechte 404 meldingen.

In het kort komt het er dus op neer op een typisch geval "it's not a bug, it's a feature".

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • torp
  • Registratie: Januari 2001
  • Laatst online: 08-09 12:48
Jeeeeetje, is dit ook nog zo in IE8? Dit verklaart voor mij ook een hoop foutmeldingen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Relevante bogpost terug gevonden.

http://blogs.msdn.com/iei...Lookahead-Downloader.aspx

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Henridv
  • Registratie: Januari 2008
  • Niet online
Dit staat op de hoofdpagina
XHTML:
1
2
3
4
5
6
7
8
9
10
11
<head>
    ...
    <base href="http://www.***.be/" />
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    ...
</head>
<body>
...
    <div class="title"><a href="nieuws/29/">titel</a></div>
...
</body>


Dit staat op www.***.be/nieuws/29/
XHTML:
1
2
3
4
5
6
7
8
9
<head>
    ...
    <base href="http://www.***.be/" />
    <link rel="stylesheet" href="css/style.css" type="text/css" />
    ...
</head>
<body>
...
</body>


Mijn .htaccess voor deze pagina ziet er als volgt uit:
code:
28
RewriteRule ^nieuws/([0-9]+)/?$ index.php?p=nieuws/lees&id=$1



Maar:
Als ik het dus goed begrijp, kan ik hier niet veel aan veranderen, behalve dan al mijn URI's niet meer relatief te maken..

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Helpt het als je de URL's niet met een / laat eindigen? Dus zo:

HTML:
1
<div class="title"><a href="nieuws/29">titel</a></div>

Acties:
  • 0 Henk 'm!

  • Henridv
  • Registratie: Januari 2008
  • Niet online
HuHu schreef op woensdag 14 oktober 2009 @ 10:57:
Helpt het als je de URL's niet met een / laat eindigen? Dus zo:

HTML:
1
<div class="title"><a href="nieuws/29">titel</a></div>
Dit helpt niet, ik krijg dezelfde error als in de startpost, behalve bij de referer geen slash op't einde..

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

Probeer in ieder geval resources (externe javascript en css) in je <head>-sectie absoluut te linken, dat scheelt al een hoop errors. Het is niet alleen IE die de mist ingaat met het niet (goed) toepassen van de <base>-tag, maar ook verschillende crawlers, bots, proxies, browser extensies en anti-virus programma's...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Henridv
  • Registratie: Januari 2008
  • Niet online
crisp schreef op woensdag 14 oktober 2009 @ 16:29:
Probeer in ieder geval resources (externe javascript en css) in je <head>-sectie absoluut te linken, dat scheelt al een hoop errors. Het is niet alleen IE die de mist ingaat met het niet (goed) toepassen van de <base>-tag, maar ook verschillende crawlers, bots, proxies, browser extensies en anti-virus programma's...
Dit lost inderdaad de problemen op :) . Wel spijtig, aangezien de <base>-tag hierdoor een beetje wordt verwaarloosd.
Pagina: 1