我正在尝试将Stacey CMS与retina.js一起用于我的小型投资组合网站。 Stacey告诉项目文件夹中的所有图像都要添加到页面中。与此同时,我想提供@2x
hi-dpi图片。如果我将这些文件包含在同一个文件夹中,Stacey会将常规image.png
和image@2x.png
添加到页面中,我希望避免这种情况。
要解决此问题,我想重写所有以@2x
结尾的图像,使根/retina
位于同一个项目文件夹中。这个文件夹是动态的,即。有许多不同的项目文件夹,所以我希望有一个重写规则适用于所有人。
我已经从堆栈溢出用户的帮助中得到了这一点:
RewriteRule ^(.*)@2x(.*)$ /Retina/$1@2x$2 [L]
但是,这并不是指原始项目文件夹的子文件夹。如何引用正确的文件夹?
编辑:或者可能还有其他方法可以解决这个问题? Changing retina.js retina image path
答案 0 :(得分:0)
我认为你遇到的问题是无休止的重定向循环。 作为你的规则
RewriteRule ^(.*)@2x(.*)$ /Retina/$1@2x$2 [L]
将尝试重定向视网膜图像的调用,例如/image@2x.jpg,但也会一次又一次地重新定位新网址/retina/image@2x.jpg,因为您的规则只检查是否请求uri中包含@2x
字符串。
尝试在规则中添加其他条件,以防止对retina
文件夹中的图像处理规则
RewriteCond %{REQUEST_URI} !Retina
RewriteRule ^(.*)@2x(.*)$ /Retina/$1@2x$2 [L]
如果Retina
文件夹实际位于另一个文件夹中并且您有多个Retina
个文件夹,这意味着当您致电site.com/project1/image.png
时,视网膜版本位于site.com/project1/retina/image@2x.png
,那么您应该试试这个:
RewriteCond %{REQUEST_URI} !Retina
RewriteRule ^(.*)/(.*)@2x(.*)$ /$1/Retina/$2@2x$3 [L]
Retina
文件夹中的位于子文件夹内,我们使用的第一个重写规则将同时包含文件夹名称和文件夹名称。变量$ 1中的图像名称,所以我们应该做的就是打破文件夹名称&将图像名称分成两个独立的变量