Door
Jan Volker
op 02-05-2019 20:23
gewijzigd op 02-05-2019 20:24
2.967 views
Beste ,
Ik probeer via .htaccess in te stellen dat `.php?id= niet wordt weergegeven in de URL. Ik probeer dit te realiseren met de volgende regel:
RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]
Echter, is dit niet het geval. Wanneer ik hier naar navigeer krijg ik een Internal Server Error (The server encountered an internal error or misconfiguration and was unable to complete your request).
Mijn .htaccess ziet er als volgt uit:
RewriteEngine on
RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]
Tja, het is nu eenmaal zo,Thomas. Als jij het via php.ini op wilt lossen, ook prima. Er leiden soms meerdere wegen naar Rome waarvoor iemand uiteindelijk kiest: de ene via de snelweg, en de andere via een langere binnenweg.
Maar goed, laten we weer on-topic gaan.
nee. Want door de ^ zeg je, dat het path moet _beginnen_ met Change. En in jouw voorbeeld begint dat met "map"
Oke duidelijk. Als ik het goed begrijp zou het dus moeten werken als ik dit aanpas naar: RewriteRule ^map/Change/(.*)$ map/Change.php?id=$1 [L]
Klopt dat?
Ik heb het in dit geval uitgeprobeerd, ook hier krijg ik dezelfde melding.
------
Correctie:
Het blijkt dus wel te werken. Het vreemde is alleen dat de elementen op deze pagina meerdere keren geladen worden. Om even een voorbeeld te noemen. Ik heb één `tekstveld` op mijn pagina. Wanneer ik de website open via: `map/Change.php?id=abc123` krijg ik deze tekstveld te zien.
Deze pagina blijft laden.
5 seconden later heb ik twee tekstvelden
20 seconden later staan er 5 tekstvelden
1 minuut later staan er 10 tekstvelden
Kan dit te maken hebben met de .htaccess?
Het vreemde is wel dat hij dit niet doet als ik de pagina via ?id= open
> Kan dit te maken hebben met de .htaccess?
Geen idee, wat doet de code in Change.php?
Heb je toevalling meerdere Change.php scripts in meerdere directories? Heb je toevallig meerdere .htaccess bestanden? Ontbreekt er mogelijk een RewriteBase?
Als het id wat je verwacht numeriek zou moeten zijn, dan zou ik kijken of de invoer ook numeriek is.
Om echt duidelijk te krijgen wat er nu precies aan de hand is zou ik alle overige dingen even uitcommenten, zoals die tweede rewriterule, die gooit misschien roet in het eten.
Het lijkt mij nog steeds makkelijker om dingen meer te delegeren, bijvoorbeeld door alles eerst door te sturen naar index.php. In index.php wil je iets van de vorm /map/Change doen, gooi het over de schutting naar /een/of/andere/interne/directory/map/Change.php, het script dat dit verzoek verder zou moeten afhandelen. Daar zie je dat dat ding nog een argument heeft waar Change.php iets mee kan.
Als je een integrale/uniforme aanpak hebt voor de routing (b)in(nen) je applicatie garandeer je ook veel beter dat je dingen makkelijker kunt compartimenteren en dus ook in afzondering kunt debuggen zonder inmenging van allerlei andere zaken.
Regel 2 gaat niet af, want je begint niet met Change.
Dus herschrijf je dit naar
/map/Change/abc123.php
Naar verwachting bestaat die file niet.
Nu zou je daar een 404 kunnen krijgen, wegens "is er niet", of je duikt opnieuw door die routine
en herschrijft dit naar /map/Change/abc123.php.php
en dan naar /map/Change/abc123.php.php.php
Tot Apache het wel mooi geweest vindt.
TIP: check op z'n minst even of er niet al ".php" in je filename staat voor je blint herschrijft.
(dit gaat trouwens ook op, voor de situatie waarbij bijvoorbeeld logo.gif niet blijkt te bestaan.