2009-08-03 7 views
0
Options +FollowSymLinks 

RewriteEngine On 
RewriteMap name2id txt:/path/to/map.txt 

RewriteRule ^/mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L] 

Première fois de faire une réécriture d'URL avec rewriteMap. J'ai un code ci-dessus, mais il renvoie une page 404 si je cours http://example.com/mysite/mods/abc.html dans mon navigateur. J'ai mis le code ci-dessus dans mon fichier hôte virtuel en configuration apache, j'ai lu dans certains forums que rewriteMap ne fonctionne que si vous avez accès à httpd.conf et hôte virtuel. mod_rewrite est en cours d'exécution sur ma machine Windows car j'ai pu exécuter une règle définie dans mon fichier .htaccess.Utilisation d'Apache mod_rewrite et RewriteMap

Le map.txt contient

abc 123 
def 456 
ghi 789 
+0

Avez-vous vérifié que mod_rewrite fonctionne correctement et Apache permet les fichiers .htaccess? – Gumbo

+0

Oui, mod_rewrite fonctionne correctement et autorise le fichier .htaccess. J'ai été capable d'exécuter certaines règles définies dans htaccess. – christian

Répondre

1

Si vous demandez /mysite/mods/…, votre règle devrait plutôt être:

RewriteRule ^/mysite/mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L] 
+0

mais je déclare ma RewriteBase en tant que/mysite. Et même j'ajoute/mysite/mods/still 404 montre .. Est-ce correct si ma règle est située dans mon fichier htaccess et la déclaration de rewriteMap est dans mon hôte virtuel? – christian

+0

Avez-vous essayé de démarrer la règle avec *^mods * au lieu de * ^/mods *? –

+0

Oui j'ai essayé et encore 404 montre. – christian

0

Si vous utilisez RewriteBase, essayez de supprimer la barre oblique initiale dans la Règle:

RewriteRule ^mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L] 
+0

J'ai eu mon code de travail, mais quand j'ai couru http://example.com/mysite/mods/abc.html j'ai eu 0 quand j'ai fait écho l'identification de chaîne de requête, est-ce que c'est juste? corrigez-moi si je me trompe parce que je m'attends à l'équivalent de abc w/c est 123 sera affiché. – christian