【问题标题】:How can I redirect a request file to real folder with htaccess?如何使用 htaccess 将请求文件重定向到真实文件夹?
【发布时间】:2015-10-22 20:42:21
【问题描述】:

我有什么

我在我的服务器中创建了一个名为“r”的文件夹,并将所有 css、js 和图像以及相应的子文件夹放入其中。

例如:

/
|public_html
           |r
             |styles
             |js
             |img

我想要什么

发送拯救文件调用的网页和样式表必须具有如下模式:“resources/(.+)”。

例如

在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) 的请求已正确加载,但来自加载的样式表。

例如

index.html 请求resources/styles/home.css 并且有效;

home.css 请求 resource/img/bg.png 并且不起作用。

在网络检查器中,请求显示为http://www.example.com/resources/styles/resources/img/bg.png 而且好像没有 RewriteRule。

决赛

我该如何解决这个问题?并且,请逐步解释答案,以便我更好地理解我的错误。

【问题讨论】:

    标签: html css .htaccess mod-rewrite


    【解决方案1】:

    您的重写规则运行良好。问题是您使用的是相对路径。 resources/styles/home.css 相对于 www.example.comwww.example.com/resources/styles/home.css。但是,resource/img/bg.png 相对于 www.example.com/resources/styles/home.csswww.example.com/resources/styles/resources/img/bg.png。此路径解析发生在浏览器中,您的重写规则与它完全无关。

    修复您的 CSS 文件和其他相关引用以指向正确的文件。在您的 CSS 文件中,您应该指向 ../img/bg.png/resource/img/bg.png

    【讨论】:

    • 谢谢你!我解决了这个问题,将 CSS 中的资源指向 ../ect,这是有道理的,因为网页需要加载的每个文件都只在 r 文件夹中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2023-04-07
    • 2017-03-06
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多