On shared web-hosting my software supports multiple domains (all domains point to the same public_html root directory). Each domain has it’s own gallery (in the gallery directory). Since multiple domains can not have their own resources (e.g. images) in the same directory for all sites I have root directories that match each HTTP host name. Here is what the directory structure looks like…
/public_html/
/public_html/.htaccess
/public_html/gallery/
/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
A request to…
…needs to be rewritten to…
/public_html/www.example1.com/gallery/topic_x/image.png
This needs to be done using the .htaccess file as is noted above, there are no .htaccess files in the HTTP Host matching directories (/public_html/www.example1.com/.htaccess does not exist).
I have been trying with numerous modifications of the following…
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(gallery)(/.+\.(gif|jpg|png))$ %{HTTP_HOST}$1$2 [L,NC]
…without success.
This one works for me:
If you want — you can add extra check to rewrite only if such final image is present (although I have not tested this):
But even your pattern should work (at least it passes the test) — maybe .htaccess is not enabled .. or you forgot to activate rewrite engine (
RewriteEngine On)?I would also recommend adding this line before (or after) activating engine:
or
Some shared hosting may only work with 2nd, for some 1st is enough.