0

如果尚未创建新的图像尺寸,我会尝试提供一些旧图像。

我的问题是,即使存在新版本,旧版本也总是会得到服务。

例子:

  • foob​​ar.png => 存在
  • n1_foobar.png => 不存在
  • b_foobar.png => 存在
  • b2_foobar.png => 存在

所有文件都在“/sub/dir/123/”中。“123”可以根据提供的页面而改变。

它的工作方式意味着“foobar.png”被提供然后我请求“n1_foobar.png”。但是当我请求“b2_foobar.png”时,它也可以提供“b1_foobar.png”,而它不应该。

我想我错过了一些标志?

这是我的代码:

<IfModule mod_rewrite.c>
  # Options -MultiViews
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)\/n1_(.*)$ $1/$2 [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)\/b2_(.*)$ $1/b_$2 [L]
</IfModule>

谢谢!

解决了:

因为我将规则添加到我的虚拟主机配置而不是“.htaccess”,所以我缺少“%{DOCUMENT_ROOT}”

这是有效的固定规则集:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\/n1_(.*)$ $1/$2 [L]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\/b2_(.*)$ $1/b_$2 [L]

编辑:添加目录 info1 编辑:解决了我自己的愚蠢问题(有没有办法删除尴尬的问题?)

4

1 回答 1

0

试试这个修改后的版本。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/n1_(.+)$ /$1/$2 [L,NC]

RewriteRule ^([^/]+)/b2_(.+)$ /$1/b_$2 [L,NC]
于 2013-07-11T11:47:12.903 回答