Ik probeer via htaccess een wachtwoord op mijn website te zetten bij bepaalde urls (alleen waar /leden in staat).

Dat probeer ik met de volgende code:


RewriteEngine on
DirectoryIndex
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

#Indexes uitzetten
Options -Indexes

#Cross site access toestaan
Header set Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"

#CMS rewrite
RewriteRule ^cms/$ /cms/administrator [L]

#mysitename

DirectoryIndex index.php

SetEnvIf Request_URI ^leden/(.*).html auth=1

AuthName "Please login"
AuthType Basic
AuthUserFile "/home/mysitename/public_html/.htpasswd"

# first, allow everybody
Order Allow,Deny
Satisfy any
Allow from all
Require valid-user
# then, deny only if required
Deny from env=auth

RewriteRule         ^leden/(.*).html catlisting.php?alias=$1 [QSA,L]
RewriteRule         ^info/(.*).html catlisting.php?alias=$1 [QSA,L]
RewriteRule         ^events/(.*).html events.php?alias=$1 [QSA,L]
RewriteRule         ^projecten/(.*).html projecten.php?alias=$1 [QSA,L]
RewriteRule         ^product/(.*).html product.php?alias=$1 [QSA,L]
RewriteRule         ^catalogus/(.*).html catalogus.php?alias=$1 [QSA,L]
RewriteRule         ^(.*).html content.php?alias=$1 [QSA,L]

ErrorDocument 404 /error/404.php
ErrorDocument 403 /error/403.php
ErrorDocument 500 /error/500.php
ErrorDocument 501 /error/501.php
ErrorDocument 503 /error/503.php
ErrorDocument 504 /error/504.php


Alleen als ik naar een pagina toe ga, bijvoorbeeld https://mysite.nl/leden/vergaderstukken.html dan zie ik geen password popup. Wat doe ik precies verkeerd?
Uitloggen met http authenticatie gaat goed hoor.

Hier gevonden :

https://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication

Hier code :

<script>
// https://stackoverflow.com/questions/233507/how-to-log-out-user-from-web-site-using-basic-authentication

var logout_from = '../login.php/'; // dir or file to logout from
var to_url = '../'; // dir or file to goto

(function logout() {
	var userAgent = navigator.userAgent.toLowerCase();

	if (userAgent.indexOf("msie") != -1) {
		document.execCommand("ClearAuthenticationCache", false);
	}

	xhr_object = null;

	if(window.XMLHttpRequest)
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject)
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else
		alert ("Your browser doesn't support XMLHTTPREQUEST");

	xhr_object.open ('GET', logout_from, false, 'username', 'password');
	xhr_object.send ("");
	xhr_object = null;

	document.location = to_url; // redirect to the url
//	window.close(); // or close the window without a redirect
	return false;

})();

</script>
Bedankt voor de uitleg, komt misschien in de toekomst van pas maar nu heb ik het opgelost door het toch via PHP te doen.

@thomas Dat gedeelte is van mijn joomla cms, die regelt de hele boel dus al uit zichzelf.
Okay, maar dan moet je daar ook je oplossing zoeken, in plaats van om Joomla heenmetselen. In Joomla kun je toch prima een rol bijmaken? Wellicht heeft Joomla inmiddels zoiets als een sitetree (het is een eeuw sinds ik dat ding voor het laatst heb gebruikt) maar anders zou je een menu kunnen ge/misbruiken om een soort van boomstructuur aan te leggen? En vervolgens (niet mooi maar wel effectief) zou je op grond van die structuur beslissingen kunnen nemen of iemand toegang heeft of niet. Zo zou je kunnen hardcoden dat iedereen die iets onder /leden wil zien een bepaald recht of rol moet hebben. Niet mooi of ideaal, maar het zal in ieder geval werken. En wellicht heeft Joomla inmiddels meer middelen tot zijn beschikking om dit te doen, mogelijk kun je (of kon je al) vereiste rollen/rechten ophangen aan individuele pagina's o.i.d.. Zorg in ieder geval dat je de Joomla-manier gebruikt of hier in ieder geval (zoveel mogelijk) gebruik van maakt, maar ga niet buiten het systeem ombouwen. En ga dus altijd via een plan te werk.

En als je dat niet kunt, wilt of lukt dan zou je je natuurlijk ook af kunnen vragen waarom je Joomla in eerste instantie gebruikt. Ik vond het zelf een verschrikkelijk onhandig systeem.
Het was de bedoeling een supersimpele login te maken met maar 1 user die altijd hetzelfde is. Dus het werkt prima zo. Joomla gebruik ik eigenlijk alleen de basis van, gebruikers kunnen via joomla menu items aanmaken e.d. en dan haal ik die aanpassingen zelf uit de joomla database en gebruik die data aan de voorkant met mijn eigen code. Het is dus geen joomla cms met een joomla voorkant, zo'n beetje 70% van de cms functionaliteiten heb ik eruit gehaald.
En waarom bouw je dit niet zelf als je Joomla nauwelijks gebruikt? Je moet je realiseren dat je je wel een erfenis op de hals haalt op het moment dat je een volledig open source content management systeem als basis gebruikt om andere dingen te bouwen. Je zult dan op de hoogte moeten blijven van patches, security, lekken et cetera. Als je je Joomla-installatie in eerste instantie al onderhoudt?

Heb je bij wijze van test of gedachtenexperiment wel eens geprobeerd om in te schatten hoeveel tijd het kost om de functionaliteit die jij van Joomla gebruikt zelf te bouwen? Toen ik met Joomla werkte kon ik daar niet echt boomstructuren in kwijt (behalve door misbruik te maken van menu's) en aangezien jij een eind op weg bent met het bouwen van eigen structuren die meer dan één niveau diep zijn zou ik mijzelf hardop de vraag stellen of Joomla je niet meer in de weg zit dan tegemoet komt.
** quote-knip **

Klopt. Voorlopig gaat het prima maar in de toekomst is het inderdaad handig zelf iets te bouwen.

Reageren