2009-01-08 6 views
1

Je voulais mettre .htaccess à réécrire:niveau de cas de réécriture .htaccess rewritecond 2 dossier = info

example.com/bla/info/ 

à

example.com/info/index.php?q=bla 

example.com/bla/info/txt/ 

à

example.com/info/index.php?q=bla&t=txt 

Je voulais que le navigateur encore Affichage:

example.com/bla/info/txt/ 

Je ne voulais pas réécrire le niveau 2 réécritures, comme:

example.com/bla/xxx/ 

ou

example.com/ccc/zzz/aaa/ 

mais

example.com/silly/info/ 

travaillerait ainsi que

example.com/strange/info/mytxt/ 

Est-ce que cela avait du sens?

Une aide?

Répondre

0

Si vous démarrez votre modèle avec^et que vous le terminez par $, la règle ne s'applique que si la chaîne entière correspond.

RewriteRule ^/bla/info/$  /info/index.php?q=bla 
RewriteRule ^/bla/info/txt/$ /info/index.php?q=bla&t=txt 

Si vous utilisez ne pas utiliser le [R] option, l'URL affichée dans le navigateur sera ce que l'utilisateur est entré.

Essayez-vous de rendre cette utilisation générale? Si c'est le cas, vous pouvez utiliser la correspondance de type regex et la substitution de variable. Pour « bla » ne importe quelle chaîne jusqu'à la prochaine barre oblique (/), utilisez

([^/]+) 

dans votre modèle et référence avec 1 $ dans votre substitution. Je recommande le Apache web pages about mod_rewrite pour plus d'informations.

[Éditer. Fixe les règles de ne pas inclure le nom d'hôte dans le motif, comme l'affiche originale a compris]

-.
BMB

0

tu me as dans la bonne voie.

J'ai fini avec quelque chose comme ceci:

RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L] 

merci beaucoup

+0

Oops, j'ai oublié le nom d'hôte ne figure pas dans le modèle. J'ai corrigé la réponse. – bmb

Questions connexes