.htaccess seulement permettre l'accès à index.php et un répertoire
Je suis en utilisant
RewriteEngine On
RewriteRule ^.*$ ./index.php
pour rediriger tout mon trafic de site web par le biais de index.php et que mon code php obtenir le request_uri et l'itinéraire de chaque demande en conséquence.
Je veux restreindre l'accès à tous les autres fichiers/répertoires à l'exception de celui qui contiendra les fichiers js, les fichiers css, images, etc.
J'ai trouvé que, pour faire ce que je peux utiliser:
Order deny,allow
Deny from all
<Files index.php>
Order Allow,Deny
Allow from all
</Files>
et puis une autre .fichier htaccess à l'intérieur du répertoire public pour permettre à certains types de fichiers.
Lorsque je navigue à localhost/mysite/index.php il fonctionne très bien depuis l'index.php le fichier est accessible.
Mais pour toute autre url, je reçois un 403, par exemple /monsite/home/est interdit, même si je m'attendais à fonctionner normalement.
Que puis-je faire obtenir le comportement attendu?
Mon plein .htacces fichier est:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./index.php
Order deny,allow
Deny from all
<Files index.php>
Order Allow,Deny
Allow from all
</Files>
EDIT: L' /public/.htaccess actuellement ressemble à ceci:
<Files ~ "\.(xml|css|jpe?g|png|gif|js|pdf)$">
Allow from all
</Files>
/public/.htaccess
aussi?J'ai édité la question d'inclure aussi.
OriginalL'auteur ppp | 2015-05-25
Vous devez vous connecter pour publier un commentaire.
Essayer ce code dans
/mysite/.htaccess
:J'ai pensé que vous souhaitez autoriser
http://example.com/public/*
ethttp://example.com/index.php
. N'est-ce pas le cas?C'est le cas, mais je veux aussi être capable d'avoir des urls propres, donc, essentiellement, l'url
localhost/mysite/home/
est une demandeindex.php
avec$_SERVER['REQUEST_URI'] = "/mysite/home"
. Le problème est que, même si la demande pour localhost/monsite/home/ est censé être envoyé àindex.php
, il est interdit par la.htaccess
Où est-ce .htaccess situé? Dans la racine ou dans
mysite
ou dans/mysite/home/
. Je pense que votre exigence et votre fichier/répertoire de la structure n'est pas en totale synchronisation.Fonctionne parfaitement! Je vous remercie pour votre temps!
OriginalL'auteur anubhava
Vous pouvez utiliser:
Qui est le .htaccess que j'utilise pour mes applications. Dans le répertoire public, je ne place index.php et le JS, CSS et les fichiers images que j'ai besoin, donc il n'y a pas besoin de filtre. N'importe quel autre fichier (tels que les téléchargements), sont enregistrer dans un dossier en dehors du dossier public - afin qu'ils ne soient directement accessibles uniquement via un script php qui les lit. Je crois que c'est la "meilleure pratique".
OriginalL'auteur Ron Dadon