我有什么
我在服务器中创建了一个名为“ r ”的文件夹,我已将所有css,js和图像放入其中,并附带相应的子文件夹。
E.g:
/
|public_html
|r
|styles
|js
|img
我想要什么
发送救援文件呼叫的网页和样式表必须具有以下模式:“resources /(.+)".
E.g。
在html文档<script src="resources/js/jquery.js"></script>
在css文档@import url('resources/css/fontawesome/css/font-awesome.min.css');
我做了什么
我尝试使用Alias和AliasMatch在public_html中设置.htaccess文件(因为服务器需要在其中发布网站),但服务器捕获了内部错误。
然后我尝试使用RewriteRule使用绝对路径和相对路径,如下所示:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^resources/(.*)$ r/$1
真实发生的事情
它工作了一半!
来自根域(www.example.com)的请求已正确加载,但是从加载的样式表中加载。
E.g。
index.html请求resources/styles/home.css
并且有效;
home.css请求resource/img/bg.png
并且不起作用。
在网络检查器中,显示的请求为http://www.example.com/resources/styles/resources/img/bg.png
而且看起来没有RewriteRule。
最终
如何解决此问题?并且,请逐步解释答案,以便我能更好地理解我的错误。
答案 0 :(得分:0)
你的重写规则工作得很好。问题是你正在使用相对路径。相对于resources/styles/home.css
的{{1}}为www.example.com
。但是,相对于www.example.com/resources/styles/home.css
的{{1}}为resource/img/bg.png
。此路径解析在浏览器中发生,您的重写规则与它完全无关。
修复CSS文件和其他相关引用以指向正确的文件。在CSS文件中,您应指向www.example.com/resources/styles/home.css
或www.example.com/resources/styles/resources/img/bg.png
。