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]

Mijn verwachting hiermee is dat wanneer ik navigeer naar:
www.mijndomeinnaam.nl/map/Change/abc123

De inhoud van de volgende pagina te zien krijg:
www.mijndomeinnaam.nl/map/Change?id=abc123

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]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

php_value session.cookie_domain .mijndomeinnaam.nl


Weet iemand toevallig waar dit aan ligt?
Ik snap je punt, maar leg dat maar uit aan een simpel iemand die een kant-en-klaar pakket heeft, of zijn website overkopieert naar een andere server.
<specifiek geval waarin een pleister handig kan zijn> => <de pleister zou overal toegepast moeten worden>

Nee.

Anyhow, @Jan, comment gewoon de regels in je .htaccess totdat je de boosdoener hebt, dat lijkt mij de eenvoudigste manier.
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.
Ivo P op 03/05/2019 10:55:06


RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]

Mijn verwachting hiermee is dat wanneer ik navigeer naar:
www.mijndomeinnaam.nl/map/Change/abc123


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.

RewriteEngine on
RewriteRule ^Change/(.*)$ Change.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]


Je roept aan /map/Change/abc123

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.

Reageren