我有一个使用资源标记(图片,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为这个问题提供了很多解决方案,但它们似乎都没有。
答案 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]