Apache Rewrite:基于HTTP主机的图像目录

Joh*_*ohn 5 apache .htaccess mod-rewrite

我的软件支持多个域名,所有域名都指向服务器上的同一目录(当然每个数据库都有不同的数据库).所以这些领域......

www.example1.com
www.example2.com
www.example3.com
Run Code Online (Sandbox Code Playgroud)

......都指向......

/public_html/
Run Code Online (Sandbox Code Playgroud)

在图像目录中......

/public_html/images/
Run Code Online (Sandbox Code Playgroud)

我的目录与每个网站的主机名完全匹配:

/public_html/images/www.example1.com/
/public_html/images/www.example2.com/
/public_html/images/www.example3.com/
Run Code Online (Sandbox Code Playgroud)

我正在尝试让Apache重写请求,这样如果你直接查看图像并查看地址栏,你只能看到一次主机名.

所以请求......

http://www.example1.com/images/book.png
Run Code Online (Sandbox Code Playgroud)

...是由Apache提取的......

/public_html/images/www.example1.com/book.png
Run Code Online (Sandbox Code Playgroud)

我尝试过但在不同情况下取得成功的其中一件事情如下,但在这种情况下不起作用:

RewriteRule ^[^/]*/images(.+) images/%{HTTP_HOST}/$1
Run Code Online (Sandbox Code Playgroud)

Ulr*_*lha 2

尝试将以下内容添加到.htaccess站点根目录中的文件 (public_html)

RewriteEngine on
RewriteBase / 

#prevent looping from internal redirects
RewriteCond %{ENV:REDIRECT_STATUS} !200
#only rewrite gif, jpg or png
RewriteRule ^(images)(/.+\.(gif|jpg|png))$ $1/%{HTTP_HOST}$2 [L,NC] 
Run Code Online (Sandbox Code Playgroud)

你的规则

RewriteRule ^[^/]*/images(.+) images/%{HTTP_HOST}/$1
Run Code Online (Sandbox Code Playgroud)

没用,因为你/之前有领先images。在 .htaccess 中,前导/被删除,因此规则永远不会匹配。