2014-07-16 1 views
0
RewriteEngine On 
RewriteCond $1 !^(allow\.php) 
RewriteRule ^(.*)$ /allow.php/$1 [L,R=301] 
RewriteCond %{HTTP_USER_AGENT} !MYUSERAGENT [NC] 
RewriteCond %{REMOTE_ADDR} !^12.12\.12\.12$ 
RewriteRule .* http://www.google.com [R=302,L] 

J'ai écrit ce code pour restreindre l'accès à ma page. Mais je veux que tout le monde accède à allow.php Ce code ne fonctionne pas, il redirige toujours. Pourquoi cela se produit-il?mod_rewrite Autoriser un seul fichier et restreindre les autres

+0

Je pense que la partie 1 $ est votre problème. Essayez d'utiliser '% {REQUEST_URI}' à la place –

+0

Ensuite, je reçois la boucle allow.php. net/allow.php/allow.php/allow.php/.... –

+0

Il ne devrait pas faire cela. La chaîne '!^Allow \ .php' signifie que tous les URI de demande ne commencent pas par allow.php. Avez-vous testé avec 'RewriteCond% {REQUEST_URI}!^Allow \ .php'? –

Répondre

0

Demandez à vos règles comme ceci:

RewriteEngine On 

RewriteRule ^sub\.php - [L,NC] 

# if not sub.php, not desired user agent and not your IP then redirect 
RewriteCond %{HTTP_USER_AGENT} !MYUSERAGENT [NC] 
RewriteCond %{REMOTE_ADDR} !^12.12\.12\.12$ 
RewriteRule^http://www.google.com [R=302,L,NC] 
+0

Quand je vais directement sur le site il me redirige /allow.php/ Quand je vais allow.php il redirige /allow.php/allow.php –

+0

Qu'est-ce que 'sub.php'? Votre code a mentionné 'allow.php'. Montrez votre .htaccess complet en question – anubhava

+0

Allow.php et sub.php sont les mêmes, je voulais juste dire compréhensible dans ma question –

0

Vous devez supprimer cette partie:

RewriteCond %{HTTP_USER_AGENT} !MYUSERAGENT [NC] 
RewriteCond %{REMOTE_ADDR} !^12.12\.12\.12$ 
RewriteRule .* http://www.google.com [R=302,L] 

Depuis la boucle du moteur de réécriture de la volonté et réécrite /allow.php/something/something sera le coup la deuxième règle et redirigés.

+0

Est-ce impossible? ? –

Questions connexes