Alle server berichten verbergen
Sit is er bijvoorbeeld één:
Quote:
Forbidden
You don't have permission to access /testht/ on this server.
You don't have permission to access /testht/ on this server.
Maar ik bedoel echt geen enkele.
De achterliggende gedachte is om hackers geen enkele aanwijzing te geven.
Na enig zoeken, en vooral goed kijken, vond ik waar m'n foutje zat.
Ik gebruikte '^(.+)$' in m'n rewrite rule; en dat eist tenminste één teken.
Terwijl het met '^(.*)$' goed gaat; dan hoeft er geen enkel teken achter localhost/testht/ te staan. En dan gaat de rewrite daarheen ik hem hebben wil.
Nu heb ik geen index.php meer nodig in de web root.
Andere vraag:
Ik lees dat het gebruik van .htaccess performance consequenties heeft omdat deze alle paden tot in de diepste diepte afzoekt; en bij een grote site kan dat veel werk zijn en derhalve lang duren.
Maar er is niemand met een kwantitatieve benadering. Wat is door de bank genomen de relatie tussen de omvang van de site en zoektijd van .htaccess?
Ikzelf ben geen fan van een hele sloot aan RewriteRules voor een website. Ik laat het liefst alles (behalve bestaande afbeeldingen of directories) doorsturen naar index.php, zodat ik daar alles afhandel. Met een 'router'-script zorg je er voor dat je alle aanroepen (www.site.nl/contact/klachten) naar de juiste scripts gaan.
Het feit dat je alles doorstuurt naar index.php betekent dat je dan je 404 handmatig vanuit PHP kan afhandelen.
Ik vind dit aardig meevallen:
Quote:
RewriteEngine On
Options -Indexes
Options +FollowSymLinks
RewriteBase /testht
RewriteRule ^(.*)$ public/index.php?url=$1 [NC,L,QSA]
Options -Indexes
Options +FollowSymLinks
RewriteBase /testht
RewriteRule ^(.*)$ public/index.php?url=$1 [NC,L,QSA]
Het biedt de mogelijkheid de index.php één niveau dieper te plaatsen.
Boven je RewriteRule kan je nog dit plaatsen:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
Dan worden bestaande directories en bestandsname genegeerd.
in $_SERVER staat namelijk ook precies de oorspronkelijke url, al dan niet inclusief alle $_GET parameters.