mod_rewrite - 从特定 HTTP 主机的子文件夹中获取图像

mod_rewrite - get images from subfolder for specific HTTP Host

我的情况很简单,但我还是做不到。我的后端控制多个站点,我需要为特定的 HTTP 主机将 /img/ 文件夹简单重写为 /img/subfolder/。

因此,来自 URL www.site1.com/img/logo.svg 的文件将在 /img/logo.svg 从 URL www.site2.com/img/logo.svg 将在 /img/site2/logo.svg

我在 .htaccess 中有这段代码,但它抛出 500 错误

RewriteCond %{HTTP_HOST} ^www.site2.com
RewriteRule ^img/(.*)$ img/site2/ [L]

我忽略了什么?谢谢!

RewriteCond %{HTTP_HOST} ^www.site2.com
RewriteRule ^img/(.*)$ img/site2/ [L]

这将引发 500 错误,因为 RewriteRule 模式 也匹配目标 URL,这将导致无休止的重写循环。您需要排除已重写为 img/site2/ 的请求,或者可能只匹配 img/<file>,而不是 img/<anything>.

例如,请尝试以下操作:

RewriteCond %{HTTP_HOST} ^www\.(site2)\.com
RewriteRule ^img/([^/]+\.\w{2,4})$ img/%1/ [L]

这匹配 /img/logo.svg,但不匹配 /img/site2/logo.svg

%1 反向引用包含从前面的 CondPattern 捕获的域名(即“site2”)。这个简单省去了重复。