在共享网络托管上,我的软件支持多个域(所有域都指向相同的public_html根目录)。每个域都有自己的图库(在图库目录中)。由于多个域在所有站点的同一目录中不能拥有自己的资源(例如图像),因此我拥有与每个HTTP主机名匹配的根目录。这是目录结构的样子......
/的public_html /
/public_html/.htaccess
/的public_html /画廊/
/public_html/www.example1.com/gallery/topic_x/image.png
/public_html/www.example2.com/gallery/topic_y/image.jpg
/public_html/www.example3.com/gallery/topic_z/image.gif
请求......
...需要重写为......
/public_html/www.example1.com/gallery/topic_x/image.png
这需要使用.htaccess文件来完成,如上所述,HTTP主机匹配目录中没有.htaccess文件(/public_html/www.example1.com/.htaccess不存在)。
我一直在尝试对以下内容进行多次修改......
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(gallery)(/.+\.(gif|jpg|png))$ %{HTTP_HOST}$1$2 [L,NC]
......没有成功。
答案 0 :(得分:1)
这个适用于我:
RewriteRule ^(gallery/.+\.(gif|jpg|jpeg|png))$ /%{HTTP_HOST}/$1 [L,NC]
如果你想 - 你可以添加额外的检查,只有在这样的最终图像存在的情况下重写(虽然我没有测试过):
RewriteCond {%DOCUMENT_ROOT}/%{HTTP_HOST}/$1 -f
RewriteRule ^(gallery/.+\.(gif|jpg|jpeg|png))$ /%{HTTP_HOST}/$1 [L,NC]
但即使你的模式应该可以工作(至少它通过测试) - 也许.htaccess没有启用..或者你忘了激活重写引擎(RewriteEngine On
)?
我还建议在激活引擎之前(或之后)添加此行:
Options +FollowSymLinks
或
Options +SymLinksIfOwnerMatch
某些共享主机可能仅适用于第二个,因为第一个就足够了。