2010-10-20 5 views
1

Je souhaite rediriger certaines URL avec id = n vers id = n + 1000 (où n est une variable). Après avoir cherché sur Internet, j'ai découvert que je pouvais le faire en utilisant une directive RewriteMap de type prg.Pourquoi mon programme RewriteMap personnalisé ne renvoie-t-il pas les résultats attendus?

Cependant, j'ai eu quelques difficultés à le faire fonctionner. Le code que j'utilise pour tester à l'aide d'une RewriteMap personnalisée est inclus ci-dessous.

Ceci est mon fichier test.pl que j'utilise le programme de carte:

#!/usr/bin/perl 
$| = 1; # Turn off buffering 
while (<STDIN>) { 
    print $_; 
} 

J'ai défini le RewriteMap dans mon fichier virtualhost.conf:

RewriteMap prp prg:/var/www/mydomain1.com/test.pl 

Et ce est le RewriteRule où j'utilise ma carte personnalisée:

RewriteRule ^Pro-id-([0-9]+).html http://mydomain2.um.ac.ir/papers-${prp:$1}.html [L,R=301] 

ce que j'attends ce code (test.pl) à faire est de retour le même id, mais il renvoie null. Quel est le problème?

+0

Bien sûr, utiliser une langue que le gars qui peut répondre à votre question sait à peine pourquoi ne pas vous ... –

+0

merci pour l'édition. J'étais tellement essayé. –

Répondre

0

Les choses que vous avez sont très bien, un réécriture avec rewriteloglevel 5 ou plus haut révélerait probablement que d'autres réécrits ou config sont en train de gêner.

0

Depuis que je viens de passer une journée en me cognant la tête contre le même problème. Il est très probable que vous utilisez la carte dans un contexte où elle n'est pas définie.

Dans mon cas, j'utilisais https dans mon URL de test et la minute où je suis passé à http tout a commencé à fonctionner. Rétrospectivement, cela aurait dû être complètement évident compte tenu de la façon dont j'avais configuré les fichiers de configuration.

0

Assurez-vous que vous avez moteur rewrite activé dans votre configuration de httpd (soit serveur ou d'un contexte d'hôte virtuel)

RewriteEngine sur

Questions connexes