2009-08-08 1 views
1

Comment est-ce que je réécrirais script.php? Id = 3295 au script/3295 ??mod réécrire questions débutant

et Im aussi se demander si quelqu'un pouvait expliquer ce que ces 3 RewriteConds fait:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 

Merci beaucoup

Répondre

2

Comme je pense plutôt que vous voulez réécrire les demandes de /script/3295-/script.php?id=3295 et non l'inverse, essayez ceci:

RewriteRule ^/script/([0-9]+)$ /script.php?id=$1 

Mais si vous voulez vraiment réécrire script.php?id=3295-script/3295, essayez ceci:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)id=([0-9]+)&?([^&].*)?$ 
RewriteRule ^/script\.php$ /script/%3?%1%4 

Et si vous voulez utiliser cette règle dans un fichier .htaccess, retirez la barre oblique du motif.

Pour votre deuxième question: Le test RewriteCond directives si l'URI demandé ne peut pas être mis en correspondance avec un fichier régulier existant (!-f), et non à un répertoire existant (!-d) et non à un lien symbolique existant (!-l).

0
RewriteRule ^/sctipt/(.*) /script.php?id=$1 
0

Pour votre première question, essayez:

RewriteRule ^script.php?id=(.*)$ /script/$1 

Pour votre deuxième question, RewriteCond sont les conditions appliquées à la prochaine RewriteRule. Donc, si vous voyez trois RewriteCond comme ça tout d'affilée, ils tous s'appliquent à seulement la règle suivante. La règle n'est vérifiée que si toutes ces conditions correspondent. Dans ce cas particulier, il vérifie le nom de fichier demandé pour s'assurer qu'il ne s'agit pas d'un fichier (!-f), mais d'un répertoire (!-d) et non d'un lien symbolique (!-l). Si toutes ces conditions sont remplies, mod_rewrite traitera la prochaine RewriteRule.