Вместо прямого доступа к изображениям мне нужно использовать RewriteRule для перенаправления набора изображений для доступа через скрипт.
Для этого используется RewriteRule:
RewriteRule ^Images/test/([^.\/]*)\.png /image.php?file=$1.png [R=301,L]
Я ожидал, что это изменится:
www.example.com/Изображений/test/123.png
в
www.example.com/image.php?file=123.png
Но этого не происходит.
Но если я изменю RewriteRule на следующее:
RewriteRule ^Images2/test/([^.\/]*)\.png /image.php?file=$1.png [R=301,L]
Следующие работы:
www.example.com/Изображения2/test/123.png
в
www.example.com/image.php?file=123.png
Разница в том, что Images закрывается, а Images2 не существует. Возможна ли работа с существующей папкой.
Любая помощь в том, как заставить работать верхний пример?
Обновить: После внимательного просмотра документация по mod_rewrite, Я нашел это:
... Обратите внимание, что mod_rewrite пытается угадать, указали ли вы путь к файловой системе или URL-путь, проверяя, существует ли первый сегмент пути в корне файловой системы ...
Кажется, что если путь интерпретируется как URL-путь, он работает, а если он интерпретируется как путь файловой системы, он не работает.
попробуйте с этим
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$0 [L]
удачи !!
Попробуйте изменить начало привязки на ^/
, просто догадка. Я лично не использовал RewriteRules, привязанные к началу строки, которая не начинается с косой черты, но я вижу, как это может создать некоторую странность в движке.