Mod-Rewrite использует экранированную строку при замене - PullRequest
0 голосов
/ 04 июля 2018

Следующая ситуация:

Исходный URL-адрес имеет формат: https://example.com/tmp/x%23.jpg

Целевой файл находится в файловой системе по следующему пути (относительно корня документа): var/assets/tmp/x#.jpg

Так что я бы хотел переписать этот путь в локальный файл, используя следующее правило:
RewriteRule "^tmp/x#.jpg$" /var/assets/$0 [PT,L]

Я также попробовал следующий подход:
RewriteRule "^tmp/x#.jpg$" /var/assets/%{REQUEST_URI} [PT,L]

Но все они приводят к 404 со следующим сообщением:
The requested URL /var/assets/tmp/x was not found on this server. Интересно то, что URL обрезается после x, поэтому первый специальный символ находится там.

Другим интересным фактом является то, что следующее условие соответствует, но правило не выполняется:
RewriteCond %{DOCUMENT_ROOT}/var/assets%{REQUEST_URI} -f # matches RewriteRule ^(.*)$ /var/assets%{REQUEST_URI} [PT,L] # file not found

Может быть, у некоторых есть идея, как я могу решить эту проблему.
Большое спасибо!

...