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”)。这个简单省去了重复。
我的情况很简单,但我还是做不到。我的后端控制多个站点,我需要为特定的 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”)。这个简单省去了重复。