2010-07-12 2 views

Répondre

1

C'est ce que je suis venu avec:

RewriteRule ^/?([^\./]*)[:;,\.]*$ category.php?cat=$1 [L,NS] 

Tout le monde voit un moyen de l'améliorer?

0

Essayez quelque chose comme ceci:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ category.php?cat=$0 [B] 

Si vous voulez passer la chaîne de requête le long aussi, assurez-vous de changer le drapeau B-B,QSA, mais il faut savoir que quelqu'un pourrait alors passer l'argument GET cat, qui remplacerait ce que vous avez défini dans la réécriture. Il existe des solutions de rechange à cette situation si vous en avez besoin, mais sinon cela devrait le faire pour vous.

+0

Merci, Tim. Je ne trouve pas le drapeau [B] documenté nulle part. Pouvez-vous l'expliquer ou me signaler quelques informations à ce sujet? – Eric

+0

Oh, je pensais que c'était juste un oubli dans les documents 2.0, mais en regardant la source, ça n'existe vraiment pas jusqu'à Apache 2.2 ... alors ne l'utilisez pas si votre site est sur 2.0. Quoi qu'il en soit, il échappe aux backreferences, de sorte que si pour une raison quelconque vous avez 'example.com/this & that', vous n'obtenez pas' cat = this' et 'that =' avec la réécriture, puisque l'esperluette sera encodée. –