Я имею дело со старым сайтом, на котором, к сожалению, иногда сохраняются изображения как
kitty%2Bcat.jpg
(буквально с% 2B там)
но иногда как
kitty+cat.jpg
(один или другой, не оба будут существовать)
К сожалению, когда браузер делает запрос на kitty% 2Bcat.jpg, он никогда не пытается найти буквальное имя файла с этим - если существует kitty + cat.jpg, он будет обслуживать его, если нет - 404s
Могу ли я использовать некоторые правила переписывания модов, чтобы, если запрашивается kitty% 2Bcat.jpg, но не существует kitty + cat.jpg, а kitty% 2Bcat.jpg - Китти% 2Bcat.jpg обслуживается?
Я представляю себе некоторую логику, но некоторые кусочки все еще отсутствуют.
RewriteCond %{REQUEST_FILENAME} \%2B
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . %{REQUEST_FILENAME} [L]
Видите - как я могу заставить Apache обслуживать его буквально, а не 404?
Возможно, apache на самом деле видит его как котенка + кошку и никогда не получает возможность проверить его как% 2B, так что я должен сделать что-то подобное?
RewriteCond %{REQUEST_FILENAME} \+
RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\+(.*)$ $1\%2B$2 [L]
Но, к сожалению, этого недостаточно, поскольку может быть несколько% 2B и другие кодировки.