2012-11-02 2 views
1

J'ai un problème dans RewriteRule htaccess: exemple: mon fichier php est main.php nous devons lorsque l'utilisateur essaie de www.mysite.com/hello, puis spectacle www.mysite.com/main.php pour cette expamle nous avons ci-dessous le code dans .htaccess:RewriteRule htaccess et fichier php caché pour tous

# BEGIN Htaccess 
Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^hello/*$ main.php 

mais dans ce code si l'utilisateur peut ouvrir www.mysite.com/hello et www .mysite.com/main.php

J'ai besoin si l'utilisateur essaie www.mysite.com/main.php affiche alors une erreur mais si vous essayez de www.mysite.com/hello afficher le contenu de main.php

merci;)

+0

Essayez ceci: RedirectMatch 404 "/ main *" –

Répondre

0

vous devez faire correspondre la demande réelle ici:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /main\.php 
RewriteRule^- [L,R=404] 

Vous pouvez ajouter cela juste sous RewriteEngine On si vous voulez. L'autre façon de faire est de peut-être vérifier $_SERVER['REQUEST_URI'] dans votre script main.php et si c'est /main.php, au lieu de servir le contenu, renvoyer une réponse 404.

+0

Ne fonctionne pas pour moi. Y a-t-il quelque chose qui ne va pas dans votre réponse acceptée? – B4NZ41

0

Vous ne pouvez pas 404 main.php et vous ne pouvez pas le 301/hello car il va en boucle infinie. Vous devrez vérifier l'URL dans main.php et si elle est différente de bonjour, le rediriger vers/bonjour