Назад | Перейти на главную страницу

RewriteRule работает, только если папка не существует

Вместо прямого доступа к изображениям мне нужно использовать 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, привязанные к началу строки, которая не начинается с косой черты, но я вижу, как это может создать некоторую странность в движке.