urlrewrite изображения в методе контроллера codeigniter дает страницу не найдена ошибка - PullRequest
0 голосов
/ 01 октября 2019

У меня есть сайт codeigniter, работающий без проблем. Теперь мне нужно переписать некоторые изображения в контроллер / метод codeigniter.

Это мой файл .htaccess, который отлично работает

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|media|static|public)
RewriteRule ^(.*)$ /index.php?/$1 [L]

Теперь мне нужно что-то подобное, чтобы переписать изображения в codeigniter. Переписать не перенаправить

RewriteRule ^(media/somefolder/someimage.jpg)$ /some_controller/somemethod?param=value [L]

Я добавил следующую строку (это не codeigniter, а обычный файл php) только для тестирования, чтобы убедиться, что RewriteRule работает и работает нормально

RewriteRule ^(media/somefolder/someimage.jpg)$ public/myphpfile.php?ipath=$1 [L]

Но если я попробую что-либо из нижеперечисленного, я получу страницу с ошибкой на странице codeigniter.

RewriteRule ^(media/somefolder/someimage.jpg)$ /some_controller/somemethod/?ipath=$1 [L]

или

RewriteRule ^(media/somefolder/someimage.jpg)$ index.php?c=some_controller&m=somemethod&ipath=$1 [L]

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 01 октября 2019

Чтобы добавить исключение только к определенному изображению

Добавьте правило media, например:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(media/somefolder/someimage.jpg)$ /index.php?/some_controller/somemethod/?ipath=$1 [L]
RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|media|static|public)
RewriteRule ^(.*)$ /index.php?/$1 [L]

Чтобы добавить исключение для всех изображений в каталоге мультимедиа

Поскольку вы отфильтровали, чтобы игнорировать каталог media в этом правиле:

RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|media|static|public)

Чтобы переписать путь media к контроллеру вместо его игнорирования, удалите media правило из него:

RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|static|public)

Добавьте правило media, например:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
# removed the media form below rule
RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|static|public)
RewriteRule ^(media/somefolder/someimage.jpg)$ /index.php?/some_controller/somemethod/?ipath=$1 [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
...