login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Htaccess rewrite rule geeft error "File does not exist"

Offline markla - 21/02/2014 10:20
Avatar van marklaPHP interesse Als men op de website een link aan klikt dan is de url die in de browser getoond wordt bijvoorbeeld :

  1. http://www.domijnnaam.nl/article/11457/wat_ik_weten_wil.html


Met .HTACCESS probeer ik die tr rewriten naar:
  1. http://www.domijnnaam.nl/index.php?page=inc_afarticle&id=11457/wat_ik_weten_wil



in de 'htaccess heb ik onder meer deze rewrite rule staan

  1. Options +FollowSymLinks
  2. RewriteEngine on
  3.  
  4. RewriteRule article/(.*)/(.*)\.htm$ index.php?page=inc_afarticle&id=$1


Het werkt wel, maar mijn error log staat vol.
Bij iedere aanroep komt er namelijk een error in het logfile.

  1. [Fri Feb 21 09:43:27 2014] [error] [client XX.XX.XX.XXX] File does not exist: /home/domijnnaam/websites/www.domijnnaam.nl/article, referer: http://www.domijnnaam.nl/article/11457/wat_ik_weten_wil.htm


Ik kom er niet achter wat ik moet doen om te voorkomen dat ik die error krijg

Ik heb al wat zitten experimenteren. maar ik ben bang dat ik de hele boel om zeep help.

Moet ik misschien iets doen met :
  1. RewriteCond %{HTTP_HOST}
  2. [NC] [L] [R=301]
  3. ^

4 antwoorden

Gesponsorde links
Offline Thomas - 21/02/2014 15:07 (laatste wijziging 21/02/2014 15:16)
Avatar van Thomas Moderator Ik weet niet of het iets uit zal maken, maar je zou kunnen proberen die "Options +FollowSymLinks" weg te halen (ik bedoel, heb je deze uberhaupt nodig?) of deze na de regel "RewriteEngine on" te zetten. Mogelijk probeert Apache het bestand door deze volgorde in je .htaccess eerst rechtstreeks op te halen? Geen idee .

Als dat het euvel niet verhelpt dan zou het kunnen dat de pagina zelf (het artikel) HTML bevat die een verwijzing maakt naar een bestand (JavaScript? CSS? afbeelding?) waarvan het pad niet meer klopt. Heeft jouw HTML-bestand een <base> tag? Voor de browser zit je namelijk te werken in de /article/ directory, dus alle relatieve verwijzingen naar bestanden plakt je browser hier "/article/" voor tenzij je dus een base href instelt, dit is een tag voor het vastleggen van een "vast uitgangspunt voor relatieve verwijzingen".

Als je Firefox gebruikt zou je Firebug kunnen gebruiken om niet-bestaande bestanden op te sporen. Deze zitten in je "NET" tab en zijn roodgekleurd.

Voorbeeld: je hebt de volgende bestanden onder je root:
/index.php
/test.gif
Je RewriteRule doet zijn ding en het artikel wordt getoond. Je artikel bevat een relatieve verwijzing naar "test.gif". Je browser (die denkt dat je onder een subdirectory van je publieke webruimte zit) gaat deze onder /article/test.gif zoeken en vraagt deze op, dit bestand kan vervolgens niet geserveerd worden...

Voeg de volgende regel eens toe aan je head:
  1. <base href="http://www.domijnnaam.nl/">

(maar dan dus aangepast aan jouw website uiteraard)

EDIT: Net even getest met bovenstaande voorbeeld, ik krijg een soortgelijke foutmelding dus grote kans dat er ergens een verwijzing naar een bestand met een foutief pad in je uiteindelijke HTML zit.
Offline markla - 22/02/2014 20:19
Avatar van markla PHP interesse Oke Duidelijke uitleg.


de article uit

  1. http://www.domijnnaam.nl/article/

is een relatieve path verwijzing en zelf zat ik ook te denken aan het zoeken en niet kunnen vinden van de "map".

Ik ik ga even firebug installeren.

voor nu, vast bedankt.

Offline Thomas - 23/02/2014 13:55
Avatar van Thomas Moderator Als je normaal Internet Explorer gebruikt, zou het zelfs om het favicon bestand (favicon.ico) kunnen gaan. IE zeurt hier altijd om, dus het zou in dit geval zelfs om een daadwerkelijk niet-bestaand bestand kunnen gaan.

Omdat dit IE-specifiek gedrag is zal je deze foutmelding dus ook niet in een andere browser (zoals FireFox) terugzien. In dat geval vind je dus niets foutiefs via Firebug.

Je doet er sowieso zeer verstandig aan om een <base> tag aan te brengen. Je moet browsers instrueren hoe deze om moeten gaan met al deze directories-die-geen-directories-zijn. En alle niet bestaande bestanden komen dan meteen bovendrijven: je errorlogs zullen je dan wel vertellen welk bestand ze niet kunnen vinden, in plaats van dat deze eerder stuklopen op de niet-bestaande directories...
Offline markla - 24/02/2014 16:15
Avatar van markla PHP interesse
Eerst maar even deze er in gezet.

  1. <base href="http://www.domijnnaam.nl/">


en stukken minder error's :-)
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s