Я зарегистрировал RewriteRule с помощью mod_rewrite, но подставленный URL-адрес неверен.
Правило таковы:
RewriteRule ^/img/z(0|1)u(.+)\.(gif|jpg|jpeg|png)$ /image-servlet/img/?z=$1&url=$2 [NE,QSA,PT,T=image/$3]
Когда я получаю доступ к следующему URL:
http://localhost/img/z1uABC.jpg
Примененное правило перенаправляет на:
http://localhost/image-servlet/img/ABC
В конечном URL отсутствует подстановка строки запроса:
?z=$1&url=$2
И заменяются просто на:
$2
Кто-нибудь может помочь мне с моей ошибкой?
Спасибо,
И прошлое
Вы также можете установить RewriteLog и RewriteLogLevel и посмотрите, поможет ли это
Попробуйте удалить QSA из ваших флагов; в вашем примере вы не представлен с исходной строкой запроса - QSA и? при подстановке они будут объединены, что не соответствует вашему шаблону; это может быть то, что лажает. Использование NE также не гарантируется с учетом введенного вами шаблона, но это не должно вызывать проблем. Думаю, вам действительно нужно только [PT, T = image / $ 3].
Я знаю, что это уродливо и еще более неэффективно, но пробовали ли вы:
RewriteRule ^ / img / z (. +) U (. +) \. (. +) $ / Image-servlet / img /? Z = $ 1 & url = $ 2 [NE, QSA, PT, T = image / $ 3]
Я, кажется, помню, что mod_rewrite будет соответствовать только (. +) Или (. *) Переменной. Очевидно (из вашего примера), это единственное, что правильно переписывается.
Конечно, для соответствия этому правилу mod_rewrite потребуется вечность, и он требует, чтобы сценарий выполнял некоторую проверку ввода.
Кроме того, apache поддерживает команду TRACE http, которая удобна для отслеживания множественных (случайных) перезаписей. Просто замените GET в HTTP-запросе на TRACE, например:
TRACE /z1uABC.jpg HTTP / 1.1
Хост: foohost.com
Наконец, если вы все еще застряли, попробуйте запустить расширения Firefox LiveHeader или Firebug.
Вы можете показать нам содержимое переменной $ _GET через print_or или что-то в этом роде?
Можете ли вы также показать нам конфигурацию mod_jk из вашего httpd.conf? Я не понимаю, зачем вам нужна директива Alias.