Почему моя пользовательская программа RewriteMap не возвращает ожидаемые результаты? - PullRequest
1 голос
/ 20 октября 2010

Я хочу перенаправить некоторые URL с id = n на id = n + 1000 (где n - переменная).После поиска в Интернете я обнаружил, что могу сделать это с помощью директивы RewriteMap типа prg.

Однако я столкнулся с некоторыми проблемами, заставляя его работать.Код, который я использую для тестирования с использованием пользовательского RewriteMap, приведен ниже.

Это мой файл test.pl, который я использую в качестве программы карты:

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

У меня естьопределил RewriteMap в моем файле virtualhost.conf:

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

И это RewriteRule, где я использую свою пользовательскую карту:

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

Что я ожидаю от этого кода (тест.pl) сделать, это вернуть тот же идентификатор, но он возвращает ноль.В чем проблема?

Ответы [ 3 ]

0 голосов
/ 27 октября 2013

Так как я только что провел день, стуча головой по той же проблеме. Весьма вероятно, что вы используете карту в контексте, который не определен.

В моем случае я использовал https в своем тестовом URL, и в ту минуту, когда я переключился на использование http, все начало работать. Оглядываясь назад, это должно было быть совершенно очевидно, учитывая то, как я настроил файлы конфигурации.

0 голосов
/ 31 декабря 2013

Убедитесь, что в конфигурации httpd включен механизм перезаписи (в контексте сервера или виртуального хоста)

ПереписатьEngine на

0 голосов
/ 09 января 2011

Все, что у вас есть, просто отлично, журнал перезаписи с rewriteloglevel 5 или выше, вероятно, покажет, что некоторые другие изменения или конфигурации мешают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...