.htaccess auf PHP-Datei mit Parameter?
Connie
- webserver
0 Fabian Transchel0 Dennis0 Connie0 Der Martin...0 Connie
1 Arx
hallo!
Ich weiß wie ich einer .htaccess-Datei regeln kann, dass bei Aufruf einer bestimmten Datei ein Passwort verlangt wird.
AuthType Basic
AuthName "GEHT DOCH"
AuthUserFile "/home/xxx/.htpasswds/verzeichnis/passwd"
<Files test.php>
require valid-user
</Files>
nun habe ich aber das Problem, dass ich den Aufruf der Datei "test.php" zulassen möchte, aber dann nicht, wenn sie mit dem Parameter "?x=abc" aufgerufen wird
das gelingt mir nicht
AuthType Basic
AuthName "GEHT DOCH"
AuthUserFile "/home/xxx/.htpasswds/verzeichnis/passwd"
<Files test.php?x=abc>
require valid-user
</Files>
es wird immer die Datei "test.php" aufgerufen, denn "?" wird ja als Platzhalter betrachtet
deshalb meine Frage: ist es vielleicht möglich, diese Datei statt über den Dateinamen direkt mit RegEx zu schützen?
<Files ~ ".(gif|jpe?g|png)$"> <= so vielleicht
und wenn ja, wie ginge dann diese Directive?
habt Ihr einen Tip für mich?
Merci im Voraus!
Hallo Connie,
Ich weiß wie ich einer .htaccess-Datei regeln kann, dass bei Aufruf einer bestimmten Datei ein Passwort verlangt wird.
.htaccess-Datei fuer test.php
AuthType Basic
AuthName "GEHT DOCH"
AuthUserFile "/home/xxx/.htpasswds/verzeichnis/passwd"
<Files test.php>
require valid-user
</Files>nun habe ich aber das Problem, dass ich den Aufruf der Datei "test.php" zulassen möchte, aber dann nicht, wenn sie mit dem Parameter "?x=abc" aufgerufen wird
Wenn du PHP zur Verfügung hast, warum verwendest du dann nicht header() für die HTTP-Authentifizierung?
Grüße aus Barsinghausen,
Fabian
Hi Fabian,
Wenn du PHP zur Verfügung hast, warum verwendest du dann nicht header() für die HTTP-Authentifizierung?
Ist nur mit PHP als Modul Version möglich, bei der von Providern oft verwendeten CGI Version geht das nicht. An der Stelle ließe sich mit mod_auth_mysql Abhilfe schaffen, haben viele große Provider aber nicht installiert.
MfG, Dennis.
Hallo Ihr Beiden,
ja, das weiß ich. Ich habe im Script folgendes:
if($_GET['x'] == "xxx") {
header("HTTP/1.0 412 Precondition Failed");
header("Status: 412 Precondition Failed");
exit;
} // end refererlog
"xxx" is natürlich nur ein Beispiel
if($_GET['x'] == "xx") {
// header("HTTP/1.0 412 Precondition Failed");
// header("Status: 412 Precondition Failed");
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
exit;
}
412 produziert eine leere Seite, 404 aber auch
und wissen tät ich schon gerne, ob es nicht doch in .htaccess irgendwie geht..
Hi Connie,
412 produziert eine leere Seite, 404 aber auch
Logisch - du sendest ja auch keinen Content mit. Die Antwort deines Scripts auf den Request besteht doch nur aus dem Header mit dem Statuscode - und eigentlich sollte dann noch der Body mit dem ErrorDocument folgen.
und wissen tät ich schon gerne, ob es nicht doch in .htaccess irgendwie geht..
Möglich - aber ich wüsste nicht wie. :(
So long,
Martin
Logisch - du sendest ja auch keinen Content mit. Die Antwort deines Scripts auf den Request besteht doch nur aus dem Header mit dem Statuscode - und eigentlich sollte dann noch der Body mit dem ErrorDocument folgen.
ja, das ist mir bewusst, vielleicht binde ich danach noch die 404-Seite ein, dann sieht das so aus als ob ;=)
merci für die Antworten
Γειά σου, Dennis!
Wenn du PHP zur Verfügung hast, warum verwendest du dann nicht header() für die HTTP-Authentifizierung?
Ist nur mit PHP als Modul Version möglich, bei der von Providern oft verwendeten CGI Version geht das nicht.
In den User Contributed Notes der PHP-Manual-Seite HTTP-Authentifizierung mit PHP findet sich eine (von mir noch unerprobte) Möglichkeit, über eine Zeile .htaccess Zugriff auf die bei der Autorisierung vom Client gesendeten Daten zu erhalten.
Wenn das Beispiel 34-1 der genannten Seite auf einem Server mit PHP als CGI-Version ausgeführt wird, passiert folgendes:
Damit dem Script nun bezüglich des User-Inputs "die Augen geöffnet werden", wird in den User Contributed Notes vorgeschlagen, eine .htaccess-Datei anzulegen und diese mit einer Rewrite-Rule (RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]) zu befüllen, die die vom Client gesendeten Authentifizierungsinformationen dem Script zur Verfügung stellt.
Aber, wie bereits gesagt, ich habe das noch nicht getestet, ob das so funktioniert. Könnt ihr ja mal machen. ;-)
Пока!
Sven aus Bonn