2010-06-03 5 views
2

J'ai une structure de répertoire avec ce qui suit sur localhost:.htaccess avec dossier public

http://localhost/testing/

Une structure de répertoire existe à l'intérieur des tests comme suit:

/testing/public 
/testing/public/index.php 
/testing/public/img 
/testing/public/css 
..etc for the js and swf directories 

Un fichier .htaccess est à l'intérieur du dossier de test et le contenu sont les suivants:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase /testing/ 

RewriteRule ^public$ public/ [R,QSA] 
RewriteRule ^public/$ public/index.php?state=public [L,QSA] 

RewriteRule ^stackoverflow$ stackoverflow/ [R,QSA] 
RewriteRule ^stackoverflow/$ public/index.php?state=stackoverflow[L,QSA] 

J'utilise PHP et dans le fichier /testing/public/index.php je voulais tester que le $ _GET ['state'] est bien en train d'enregistrer la variable.

Lorsque je tente de tester:

http://localhost/testing/public

$ _GET [ 'état'] ne se trouve pas du tout MAIS

http://localhost/testing/stackoverflow

fait en effet écho que $ _GET ['state'] est égal à 'stackoverflow'.

Qu'est-ce qui me manque ici ??? Pourquoi est-ce que je ne peux pas obtenir l'état = public dans le premier lien? Merci pour l'aide!

Répondre

1

Cela fonctionne très bien sur mon système, mais je pense que vous avez des problèmes avec une règle de réécriture avec le même nom qu'un répertoire de système de fichiers réel. Le système de fichiers aura généralement la priorité. Ainsi, lorsque vous chargez '/ testing/public', il charge /testing/public/index.php sans exécuter votre règle.

Essayez de changer la règle à ceci:

RewriteRule ^public_$ public_/ [R,QSA] 
RewriteRule ^public_/$ public/index.php?state=public [L,QSA] 

Accédez à « test/public_ », qui imprime si « public » comme prévu, alors vous saurez que votre problème est.

+0

Vous avez raison avec ce que vous avez dit, il a eu préséance! Enfin je peux dormir avec un esprit sain ... haha. Merci Nathan. J'ai complètement changé le nom du répertoire en 'public_content' pour l'éviter complètement. Encore merci! – ninu

Questions connexes