重写资源URL以从子目录提供文件

时间:2014-04-13 18:04:09

标签: .htaccess apache2

我有一个使用资源标记(图片,css,脚本)的静态HTML网站,如下所示:

<html>
    <head><title>htaccess test page</title></head>
    <body>
        <img src="/img/img.jpg" alt="...">
    </body>
</html>

当我在浏览器中加载html文件时,请求是:

http://localhost/img/img.jpg(可以理解地返回404)

我希望在哪里提出要求:

http://localhost/site/img/img.jpg

目录结构如下:

- www
    - site
        - .htaccess
        - img
            - img.jpg

我一直在寻找一个解决方案,并且有一个模糊的想法RewriteCond是要走的路,但是我无法让它发挥作用:

RewriteEngine On
# if requested URI is not a file
RewriteCond %{REQUEST_FILENAME} !-f
# serve the file from the img directory, yes, very limited,
# and requires me to add rules for scripts, css etc.
RewriteRule ^(.*)$ img/$1 [L]

任何帮助都将受到高度赞赏。 SO为这个问题提供了很多解决方案,但它们似乎都没有。

1 个答案:

答案 0 :(得分:0)

您的解决方案将以这种方式处理每个文件,并将重新解决它。使用此 RewriteRule ,只有图像会被重定向到/ site / {在HTML中定义的图像的路径}

RewriteRule ([^.]+\.(jpe?g|gif|bmp|png))$ /site/$1 [R=301,L,NC]

你应该放置像<img src="img/img.jpg" alt="...">

这样的图像

最终版本如下:

RewriteEngine On  
# if requested URI is not a file
RewriteCond %{REQUEST_FILENAME} !-f
# image part
RewriteRule ([^.]+\.(jpe?g|gif|bmp|png))$ /site/$1 [R=301,L,NC]