Frage

Gibt es eine Möglichkeit, wie ich den Apache Web-Server so konfiguriert, dass ein 404 (nicht gefunden) Fehlercode anstelle von 403 (verboten) für bestimmte Verzeichnisse zurückzukehren, die ich zugegriffen nicht zulassen wollen werden?

fand ich einige Lösungen die Verwendung von mod_rewrite was darauf hindeutet, wie z.

RewriteEngine On
RewriteRule ^.*$ /404 [L]

Da der Zweck 404 statt 403 zu senden ist die Verzeichnisstruktur zu verschleiern ist diese Lösung zu enthüllen, weil es bis zu einem gewissen anderen Ort umleitet, die es offensichtlich machen, dass das Verzeichnis ursprünglich tatsächlich zugegriffen existiert.

War es hilfreich?

Lösung

RedirectMatch wie in z.

RedirectMatch 404 ".*\/\..*"

funktioniert der Trick, es Zugriff auf alle Dateien oder Verzeichnisse verbietet mit einem Punkt beginnen, einen „404 Not Found“ Fehler geben.

Von der Apache-Handbuch: „Die Redirect [Spiel] Richtlinie bildet eine alte URL in ein neues, indem Sie den Client fragt die Ressource an dem neuen Standort erneut abzurufen.“ Standardmäßig Redirect einen Code 302 Rückkehr sendet, aber es kann auch andere Statuscodes zurück, wie oben gezeigt.

Andere Tipps

Sie können so etwas wie dies machen:

.htaccess

  

Errordocument 403 /error/404.php

404.php

<?php
$status = $_SERVER['REDIRECT_STATUS'] = 404;
header( $_SERVER['SERVER_PROTOCOL'] . ' ' . $status);
?>

404 Error

Nach dem gleichen Problem, ich mit der folgenden .htaccess-Datei am Ende

Options -Indexes
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain.com [NC]
RewriteRule ^(.*)/$ - [R=404,NC]

Die 1. und 3. Zeile sicherzustellen, dass Sie den Ordner Inhalt nicht auflisten können, und wenn Sie es tun, werden Sie einen 404-Fehler erhalten. Die RewriteCond Richtlinie stellt sicher, dass diese Rewrite-Regel gilt nur für Hauptdomain. Da ich mehr Sub-Domains hat, ohne die RewriteCond wurde Zugriff auf www.mydomain.com/subdomain auch eine 404-Rückkehr, das war nicht das, was ich wollte.

Um alle 403.400 Fehler in 404-Fehler zu ändern, setzen Sie diese am Ende der /etc/apache2/conf.d/localized-error-pages oder in ein .htaccess

# Will raise a 404 error, because the file <fake_file_for_apache_404.php> doesn't exist.
# We change 403 or 400 to 404 !
ErrorDocument 400 /fake_file_for_apache_404.php
ErrorDocument 403 /fake_file_for_apache_404.php
# We need to rewrite 404 error, else we will have "fake_file_for_apache_404.php not found"
ErrorDocument 404 "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL <script type=\"text/javascript\">document.write(document.location.pathname);</script> was not found on this server.</p></body></html>"
ErrorDocument 500 "Server in update. Please comme back later."
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top