Door
Fester Splinter
op 17-03-2019 21:35
gewijzigd op 17-03-2019 21:36
4.944 views
Hi,
Naar aanleiding van een eerder aangemaakt topic heb ik op mijn website een 404 pagina aangemaakt.
Ik heb dat op de volgende manier gedaan:
Ik heb een .htaccess bestand gemaakt met de volgende code:
En ik heb uiteraard ook de 404.php en 403.php in de root geplaatst.
Ik heb nu nog één vraag.
Bestaat er ook een ErrorDocument of een andere regel voor url's die eindigen met een slash?
Ik wil dit graag toepassen mdat google search console/ dekking pagina's uitsluit voor indexering. Al die pagina's die worden uitgesloten eindigen met een slash.
Het is makkelijker om een lijst van "goedgekeurde" URL's te hebben (whitelist) in plaats van het formuleren van allerlei uitzonderingen die niet geaccepteerd worden (blacklist). Het probleem van een blacklist is dat wanneer je een geval hebt waar je niet aan had gedacht de blacklist zijn werk niet goed doet.
Als we het over routing en .htaccess hebben zou mijn advies nog altijd zijn dat er één RewriteRule voor routing in je .htaccess-bestand staat die alle verzoeken delegeert naar index.php. Index.php op zijn beurt analyseert de oorspronkelijke aanroep (te vinden onder $_SERVER['REQUEST_URI']) en bepaalt via interne (whitelist) logica of de aanroep valide was. Dit kan bijvoorbeeld in zijn eenvoudigste vorm neerkomen op, ik zeg maar wat, een file_exists() controle op een intern pad ofzo. Slaagt deze controle: laad bijbehorende code. Slaagt deze controle niet: voeg een 404 statuscode toe aan de response en serveer een bijbehorende page-not-found pagina.
Dit heeft een aantal voordelen. Zo handel je alle (verdere) routing logica af in PHP-code zelf (gedelegeerd vanuit .htaccess) en houd je je .htaccess bestand schoon en overzichtelijk voor belangrijkere zaken.
Ik had al even gegoogeld maar ik vind het allemaal nogal complex wat ik tegenkom.
Dus voordat ik het echt ga gebruiken wil ik zeker weten dat het goed is wat ik gebruik. Want ik weet dat je met een htaccess bestand je hele website naar de kloten kan gaan.
Daarom vraag ik toch maar voor de zekerheid of de volgende code goed is om te gebruiken:
RewriteEngine on
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
Zoals in dat andere draadje al was aangegeven kon je dat dus oplossen met een base href zodat alle relatieve verwijzingen relatief zijn vanaf de webroot en niet relatief vanaf de huidige directory.
Het is niet nodig om nog meer te prutten in je .htaccess bestand.
edit: er werd zelfs een waarschuwing gegeven over 301 redirects (als je het eerste resultaat raadpleegde), als je niet zeker weet wat er gebeurt is het in ieder geval niet verstandig om daarmee te beginnen...
Het is niet zo dat .htaccess een permanente werking heeft
Nee maar het effect is wel permanent totdat je je browser cache leegmaakt als je 301 redirects gebruikt... Dit is gewoon hopeloos verwarrend en onnodig complex.
Zoals in dat andere draadje al was aangegeven kon je dat dus oplossen met een base href zodat alle relatieve verwijzingen relatief zijn vanaf de webroot en niet relatief vanaf de huidige directory.
Als ik met die base-tag aan de gang ga dan moet ik meer dan 750 pagina's aanpakken.
En het is niet lullig bedoeld Teun maar je komt steeds met een ander antwoord dan waar ik eigenlijk op hoop.
Ik wil graag die slash wegwerken en dan is mijn probleem opgelost.
Hoe zit je site dan in elkaar?
Heb je voor elke pagina een compleet HTML-document? Hoe wil je bijv. dan je header of menu aanpassen? Ook 750 pagina's aanpassen?