WordPress Permalinks gebruiken i.c.m. beveiligde directories

Door het gebruik van Permalinks binnen WordPress zorg je er voor dat de adressen van je pagina’s er netjes uit zien, dus dit is een veel gebruikte instelling. Een gevolg hiervan is echter, dat alle adressen worden herschreven via een .htaccess bestand in de hoofdmap van je WordPress installatie. Elk adres wordt daarmee geanalyseerd en aangeboden aan index.php, die dan uit de database de juiste informatie ophaalt, zoals de opgevraagde blog en zo.

Voorbeeld  van .htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Uitzonderingen
Nu kan het natuurlijk zo zijn, dat je naast WordPress nog meer mappen/bestanden op je domein hebt staan, die niet door WordPress moeten worden afgehandeld, maar rechtstreeks benaderbaar moeten zijn. (bv.: www.mijndomein.nl/mapnaam/ ). Hiervoor zit in het .htaccess bestand een regel ingebouwd m.b.v. RewriteCond, waarbij bestaande mappen en bestanden niet herschreven worden.

Dit gaat fout bij mappen die beveiligd zijn, dus wat dan?
Als een map echter beveiligd is, kan er niet bepaald worden of deze echt aanwezig is (er komt een 401 error terug), waarbij het adres dus toch herschreven wordt en je hoogstwaarschijnlijk dus een 404 error krijgt in WordPress, omdat de informatie niet in de database gevonden kan worden.

Oplossing
Maak op je site een (leeg) bestand aan met bijvoorbeeld de naam onerror.html. Wanneer je 2 regels toevoegt aan het begin van je .htaccess bestand, dan lukt het wel om beveiligde mappen te benaderen. Het gaat om de volgende 2 regels, die de foutsituaties 401 en 403 afvangen.

ErrorDocument 401 /onerror.html
ErrorDocument 403 /onerror.html

Waarbij het onerror.html bestand hier in de hoofdmap staat. Anders moet je het pad natuurlijk even aanpassen.

Gebaseerd op: http://wordpress.org/support/topic/htaccess-and-subdirectories

3 comments on “WordPress Permalinks gebruiken i.c.m. beveiligde directories

  1. Beste Jos,

    Allereerst bedankt voor dit goede artikel.

    Ik heb een site genaamde assieradenmaker.nl helaas krijg ik via de webmastertools continue fouten te zien. Te weten:

    toename van het aantal fouten van het type ‘niet gevonden’ Dan zie allemaal links met product variaties die in 148 verschillende manieren niet gevonden worden en een 404 fout geven. Zoals: ?product_variation=product-660-variation-4/ (148 keer niet gevonden, 404 fouten)

    En een Increase in authorization permission errors zoals:
    cms/wp-login.php?redirect_to=%2F
    cms/wp-login.php?redirect_to=%2Fproduct-categorie%2Fgedenksieraden-asdoosje%2F (189 keer toegang geweigerd, 401 fouten)

    Weet je misschien hoe ik dit kan oplossen, ik weet niet of bovenstaande verhaal wat je uitlegt ook geldt voor het probleem waar ik mee zit.
    Ik hoop dat je me kunt helpen, want ik kom er maar niet achter en niemand lijkt een antwoord te hebben.

    Ik hoop dat je het me kunt uitleggen.

    Vriendelijke groet!

    • Hallo Frank,

      Als ik naar bijvoorbeeld http://www.assieradenmaker.nl/cms/wp-login.php?redirect_to=%2Fproduct-categorie%2Fgedenksieraden-asdoosje%2F ga, dan krijg ik een inlogscherm van antagonist (en na dat inloggen komt je WordPress login scherm naar voren). Die url blijkt dus inderdaad in een beveiligd deel te zitten en dat lijkt dan wel op de bovenstaande situatie. Ik neem aan dat de url wel toegankelijk is, wanneer je ingelogd bent op de site?
      Vervolgens is het ook interessant om uit te zoeken hoe mensen die url bereiken. Staat die link bijvoorbeeld op andere sites of op je eigen site in het openbaar toegankelijke deel? Wellicht is het dan juist goed om te kijken of je dat niet anders kunt inrichten.

      Ik hoop dat je hier iets mee kunt, want het is ook niet echt mijn specialisme.

      Groetjes Jos

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *