将图像重写到codeigniter控制器方法给页面未找到错误

问题描述 投票:0回答:1

我已经建立了一个代码点火器站点,并且没有任何问题。现在,我需要将一些图像重写为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]

我在这里想念什么?

codeigniter mod-rewrite url-rewriting codeigniter-3
1个回答
0
投票

仅向特定图像添加例外

添加如下的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]
© www.soinside.com 2019 - 2024. All rights reserved.