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:

ErrorDocument 404 /404.php
ErrorDocument 403 /403.php

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.
Dan strip je toch die slash in je requests?
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.

Dan strip je toch die slash in je requests?

Hoe kan ik een slash strippen? Ik beheers geen php of .htaccess?
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...
Mark Coenie op 17/03/2019 23:39:46

Want ik weet dat je met een htaccess bestand je hele website naar de kloten kan gaan.

Zeg maar 'onbereikbaar' als je ontwetend wat doet. Maar je kan het toch uittesten?
Lukt het niet? Check je error_log en rol de aanpassing terug.

Het is niet zo dat .htaccess een permanente werking heeft

Reguliere expressies kan je ook op https://regexper.com ontleden.

Maar base-dir is wat je zoekt.
- Ariën - op 17/03/2019 23:45:17
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?

Reageren