J'ai des fichiers .inc que je souhaite empêcher d'être accessibles via les pages Web. Je veux simplement les rediriger vers une autre page ou lancer un 404 lors de l'accès à ces fichiers.
J'ai essayé jusqu'à présent ce qui ne restreint rien:
RewriteCond %{REQUEST_URI} .*\.(inc)
RewriteRule ^(.*)/ /logout.php [R=404,L]
Comment bloquer l'accès à tous les fichiers avec l'extension ".inc"
La façon habituelle de "bloquer" l'accès à ces fichiers serait de servir un 403 Forbidden.
Par exemple, en utilisant mod_authz_core sur Apache 2.4:
<Files "*.inc">
Require all denied
</Files>
Si vous souhaitez spécifiquement répondre avec un 404 à la place, vous pouvez utiliser mod_rewrite. Cela doit aller près du haut de votre fichier de configuration. Par exemple:
RewriteEngine On
RewriteRule \.inc$ - [R=404]
Ces deux règles entraîneront le renvoi du document d'erreur 403 ou 404, que vous pouvez personnaliser à l'aide de la directive ErrorDocument
. Par exemple:
ErrorDocument 404 /errors/my404.html
Juste quelques notes sur votre exemple de code:
RewriteCond %{REQUEST_URI} .*\.(inc) RewriteRule ^(.*)/ /logout.php [R=404,L]
Cela aurait pu "fonctionner", cependant, le RewriteRule
modèle (c'est-à-dire. ^(.*)/
) nécessite que l'URL contienne une barre oblique, ce qui n'est pas le cas pour tous les fichiers à la racine du document.
Cela correspond également à .inc
N'importe où dans l'URL. La directive RewriteCond
n'est pas requise ici - vous pouvez faire toutes les correspondances de motifs dans la directive RewriteRule
.
Il n'y a pas besoin des sous-modèles capture, c'est-à-dire. les parenthèses autour de (.*)
et (inc)
. Cela crée des "références arrières" qui ne sont pas utilisées ici.
Lorsque vous spécifiez un code de "redirection" autre que 3xx, la chaîne substitution (c'est-à-dire /logout.php
) Est ignorée. Aucune redirection externe n'est déclenchée. Vous devez simplement spécifier un seul -
(Trait d'union) dans ce cas. De plus, l'indicateur L
(last
) n'est pas requis.
À part: Ce n'est pas une bonne idée d'avoir des fichiers avec l'extension .inc
S'ils sont des fichiers include/script pour votre projet (à moins qu'ils ne soient peut-être pas conservés en dehors de la racine de votre document). Comme vous l'avez peut-être réalisé, si vous le demandez directement, le navigateur les verra probablement sous forme de texte/clair et les affichera simplement tels quels dans le navigateur. Il est conseillé de toujours utiliser l'extension de script correcte si possible. par exemple. foo.inc.php
.