À l'aide de plusieurs règles de réécriture?
J'ai un simple .fichier htaccess avec le contenu ci-dessous.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L]
</IfModule>
Je veux ajouter cette règle.
RewriteRule ^p$ index.php?p=
J'ai essayé de faire ce ci-dessous mais ça ne fonctionne pas. Il semble que les deux règles sont en cours d'exécution. J'ai essayé un couple de différents drapeaux et encore une fois, pas eu de chance. Quelqu'un pourrait-il me dire comment obtenir ce travail s'il vous plaît.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^p$ index.php?p=
RewriteRule ^(.*)$ index.php?s=$1 [L]
</IfModule>
OriginalL'auteur user1326244 | 2012-08-28
Vous devez vous connecter pour publier un commentaire.
Vous devriez d'abord savoir que la réécriture des conditions n'affectent que la règle de réécriture suivante, vous avez ajouté à votre nouvelle règle entre la réécriture des conditions et de la règle de réécriture, ce qui veut dire qu'ils affectent maintenant votre nouvelle règle et non l'ancien (ce que vous avez dans votre code, c'est que les règles de réécriture n'est effectuée que si le ciblées url n'est pas un fichier ou un répertoire), donc si vous voulez que votre vieille règle à être affectés par la réécriture d'état, vous devrez ajouter à votre nouvelle règle avant de le réécrire conditions.
Pour votre question, je pense que samsamX a répondu assez (Il est fixé par l'ajout du drapeau [L]).
À la fin, vous devriez avoir quelque chose comme ceci :
OriginalL'auteur Oussama
Vous devez ajouter
[L]
drapeau pour arrêter la lecture des règles lors d'un match :Rappel de
RewriteRule
drapeaux :Extrait de ce (très) complet post : https://serverfault.com/questions/214512/everything-you-ever-wanted-to-know-about-mod-rewrite-rules-but-were-afraid-to-as
OriginalL'auteur zessx