请参阅.htaccess中的子文件夹

时间:2015-02-15 18:32:51

标签: .htaccess

我正在尝试将Stacey CMS与retina.js一起用于我的小型投资组合网站。 Stacey告诉项目文件夹中的所有图像都要添加到页面中。与此同时,我想提供@2x hi-dpi图片。如果我将这些文件包含在同一个文件夹中,Stacey会将常规image.pngimage@2x.png添加到页面中,我希望避免这种情况。

要解决此问题,我想重写所有以@2x结尾的图像,使根/retina位于同一个项目文件夹中。这个文件夹是动态的,即。有许多不同的项目文件夹,所以我希望有一个重写规则适用于所有人。

我已经从堆栈溢出用户的帮助中得到了这一点:

RewriteRule ^(.*)@2x(.*)$ /Retina/$1@2x$2 [L]

但是,这并不是指原始项目文件夹的子文件夹。如何引用正确的文件夹?

编辑:或者可能还有其他方法可以解决这个问题? Changing retina.js retina image path

1 个答案:

答案 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中的图像名称,所以我们应该做的就是打破文件夹名称&将图像名称分成两个独立的变量