.htaccess fragt 2 mal nach Benutzerdaten

MisterSimpson

Simpsons Fan
ID: 50883
L
20 April 2006
2.947
106
Hallo habe eine .htaccess Datei die 2 mal nach Benutzerdaten fragt. Wie kann das sein?

Hier der Code

Code:
AuthUserFile   /pfad/zum/root/.passwd
AuthGroupFile  /dev/null
AuthName       "Intern"
AuthType       Basic
<Files ~ "[^index.php|register|statistik]">
    require valid-user
</Files>


Options +FollowSymLinks
RewriteEngine on
RewriteOptions inherit

RewriteRule ^register/?$ https://www.domain.de/index.php?id=737 [R=301,L,NC]

### Permanent Redirect (301) RewriteRule www.domain.de -> domain.de
#RewriteCond %{HTTP_HOST} ^domain.de$ [NC]
#RewriteRule ^(.*) https://www.domain.de/$1 [R=301,L]

### Redirect simulateStaticDocuments-URLs except typo3-be
RewriteRule ^(typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]
RewriteRule ^typo3$ typo3/index_re.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)\.html$ /index.php [L]


#RewriteRule ^statistik$ https://www.domain.de/cgi-bin/awstats.pl?config=domain.de [L]

RewriteCond %{REMOTE_ADDR} !^IP Adresse$ [NC]
RewriteCond %{HTTP_HOST} ^crawl.domain.de$ [NC]
RewriteRule .* https://www.domain.de [R=301,L]

RewriteCond %{HTTP_HOST} ^domain.de$ [NC]
RewriteRule ^(.*) https://www.domain.de/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^crawl.domain.de$ [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://www.domain.de [R=301,L]
 
Rufe ich domain.de auf, werde ich überhaupt nicht nach Nutzerdaten gefragt!

Ansonsten wirds wohl daran liegen, dass du zuerst eine HTTP-Anfrage stellst, dich für diese authentifizieren musst, dann nach HTTPS umgeleitet wirst und dafür natürlich noch einmal deine Daten angeben musst.

Abhilfe könnte schaffen, die Rewrite-Regeln an den Anfang der Datei zu setzen, garantieren kann ich dafür aber nicht.
 
I guess mein vorschreiber hat recht:
Du wirst zweimal gefragt weil du von zwei authorities um authentifizierung gefragt wurdes https://domain.de und https://domain.de, nach dem ersten (https://) schick dein browser nicht den authorization header mit wenn er https:// anfragt.

Entweder Auth nur nach redirect oder benutz dieselben authorities. Nachdem du bei https:// authorisiert bist kannste eh auf verschluesselung verzichten, die Daten sind eh schon klartext geflossen...
 
Wie gesagt, es könnte schon helfen, die Rewrite-Regeln in der .htaccess VOR der require-Anweisung zu platzieren.
Falls nicht, musst du etwas tricksen und die Benutzerabfrage ausschalten, falls der User über HTTP kommt. Dann musst du allerdings sicherstellen, dass tatsächlich alle Anfragen nach HTTPS umgeleitet werden, sonst ist deine Benutzerabfrage wirkungslos.
Funktionieren würde das inetwa so:
Code:
Require valid-user
Order Allow,Deny
Allow from env=HTTPS
Satisfy any
Bin mir aber nicht sicher, ob die Umgebungsvariable HTTPS im Falle eines HTTP-Requests nicht gesetzt ist oder den Wert "no" enthält, falls es nicht funktioniert müsstest du dir halt mit SetEnvIf selber eine Variable bauen.
 
Habe gerade diesen Code direkt unter dem Login gesetzt, doch hat leider auch nicht geholfen

Code:
RewriteCond %{HTTP_HOST} ^domain.de$ [NC]
RewriteRule ^(.*) https://www.domain.de/$1 [R=301,L]

@MrToiz Dein Code funktioniert auch irgendwie nicht. Er fragt trotzdem 2 mal nach den Benutzerdaten.
 
Habe es auch schon nach ganz oben gepackt und schon mehrere Foren durchsucht. Manche haben auch das Problem, aber dann steht da keine Lösung zu.
 
Ersetze mal folgendes
Code:
<Files ~ "[^index.php|register|statistik]">
    require valid-user
</Files>
durch das hier
Code:
<Files ~ "[^index.php|register|statistik]">
    Require valid-user
    Order Allow,Deny
    Allow from env=HTTPS
    Satisfy any
</Files>
Und berichte, was passiert.
Auf ähnliche Weise realisiere ich seit langem, dass Besucher aus dem Internet ein Passwort eingeben müssen, während solche aus dem LAN auch ohne Zugriff bekommen.
 
Hmm komisch...bau dir doch mal eine phpinfo, rufe diese über HTTPS aus und poste mal den Bereich Apache Environment. Anscheinend wird die Variable "HTTPS" überhaupt nicht gesetzt...
 
Ich gebe mal Beispiele raus wo ich denke, dass diese interessant sind:

HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING gzip,deflate
HTTP_ACCEPT_LANGUAGE de,de-de;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CACHE_CONTROL max-age=0, max-age=0
HTTP_CONNECTION keep-alive
HTTPS 1
REDIRECT_HTTPS 1
REDIRECT_SP_LANG 0
REDIRECT_SP_TZ Europe/Berlin
REDIRECT_STATUS 200
SERVER_PORT 443
 
Okay, denkfehler, probier mal folgendes
Code:
<Files ~ "[^index.php|register|statistik]">
    Require valid-user
    Order Deny,Allow
    Deny from env=HTTPS
    Satisfy any
</Files>
Und wenn das immer noch nicht funktioniert, hätte ich noch einen Test:
Code:
<Files ~ "[^index.php|register|statistik]">
    SetEnvIf Server_Port ^443$ Test
    SetEnvIf HTTPS ^1$ Test
    Require valid-user
    Order Deny,Allow
    Deny from env=Test
    Satisfy any
</Files>
 
Und hier die Lösung

Code:
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.domain.de"
ErrorDocument 403 https://www.domain.de