2 votes

empêcher l'accès à 'index.php' en utilisant Slimframework

J'utilise le Slimframework pour mon application web et j'ai toutes les requêtes url qui pointent vers un point d'entrée dans 'index.php' en utilisant la réécriture suivante dans mon .htaccess :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

Mais tout va bien, index.php est toujours accessible dans l'url par le biais de la requête/route suivante : /mywebsite/public/index.php ce que je ne veux pas. Je comprends maintenant que c'est le seul fichier dans mon dossier html public, mais je ne veux pas qu'il soit accessible dans l'url... Comment puis-je rediriger cela vers une route erronée via

1) une réécriture du fichier .htaccess

Ou

2) une certaine logique mince

? ??

3voto

SuperDuperApps Points 5113

Vous pourriez mettre à jour vos règles comme suit :

RewriteEngine on
# Rewrite to index.php
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^ index.php [L,E=rewritten:1]
# 404 any direct access of index.php
RewriteCond %{ENV:rewritten} !=1
RewriteCond %{ENV:REDIRECT_rewritten} !=1
RewriteRule ^index\.php$ - [R=404,L]

J'ai enlevé le drapeau QSA qui n'était pas nécessaire. J'ai supprimé la vérification des fichiers et des répertoires, qui n'était pas nécessaire, et je l'ai remplacée par une vérification des éléments suivants index.php ce qui est plus rapide.

Pour répondre à votre question, je renvoie un 404 pour toute tentative d'accès direct à index.php. Une autre alternative serait de rediriger vers quelque chose.

2voto

starkeen Points 29161

Si vous souhaitez désactiver l'accès externe à index.php, placez le code suivant au-dessus de vos règles existantes

RewriteEngine on

RewriteCond %{THE_REQUEST} \s/index\.php\s [NC]
RewriteRule ^ - [F]

Cela renverra une erreur d'interdiction si /index.php est accessible directement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X