2010-10-02 10 views
0

Existe-t-il un moyen d'utiliser .htaccess pour refuser une demande directe à une partie spécifique de mon site Web, par ex. www.example.com/XXXXXRefuser la demande directe en utilisant .htaccess

Je souhaite uniquement autoriser Referer uniquement à XXXXXX. Je sais que je dois utiliser HTTP_REFERER pour atteindre mon objectif mais actuellement j'utilise d'autres règles .htaccess et je ne sais pas comment combiner toutes les règles. Voilà ce que j'ai en ce moment dans mon .htaccess

options + FollowSymlinks RewriteEngine sur RewriteCond% {REQUEST_FILENAME}! -f RewriteRule^([^ /] +) $ /index.php?page= $ 1 [QSA, L]

Répondre

0

Tout d'abord, je ne suis pas sûr d'avoir bien compris votre question, mais je l'essaie quand même.

Actuellement, vous avez:

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA,L] 

Qu'est-ce que vous auriez besoin en plus est:

RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC] 
RewriteRule XXXXXX/(.*)$ - [F,NC,L] 

.htaccess RewriteRule « s sont vérifiées dans l'ordre où ils se produisent, vous voudrez peut-être faire quelque chose comme ça, même si je suis corrigé parce que je n'ai pas eu la chance de vérifier si cela fonctionnerait:

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA] 
RewriteCond %{HTTP_REFERER} !^http://your-domain\.tld/.*$ [NC] 
RewriteRule XXXXXX/(.*)$ - [F,NC,L] 

Vérifie d'abord s'il s'agit d'un fichier argumenté nommé index.php qui doit être réécrit, sinon (flag L), continue pour la règle suivante en saisissant une nouvelle condition, puis si la règle valide, restreindre l'accès (lancer HTTP 403).

Est-ce que cela a du sens? Quoi qu'il en soit, s'il vous plaît expérimenter avec l'exemple ci-dessus. Htaccess parce que comme je l'ai dit, je ne pouvais pas le tester.