【问题标题】:Page resources fail to load when removing '/' slash from URL upon .htaccess redirect.htaccess 重定向时从 URL 中删除“/”斜杠时无法加载页面资源
【发布时间】:2016-07-15 01:15:44
【问题描述】:

我有一个简单的重定向规则如下:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^contact-us\/?.*$ ./contact-us.php [NC,QSA,L]

此规则适用于以下 URL:

http://localhost/folder1/folder2/folder3/contact-us/

问题是,如果我删除最后的斜线,页面会正确加载,但资源(css/js)没有加载

http://localhost/folder1/folder2/folder3/contact-us ----> This fails

在尝试加载资源时似乎省略了一个文件夹,因此 JS 资源的 URL 设置为 http://localhost/folder1/folder2/js/jquery.js 而不是 http://localhost/folder1/folder2/folder3/js/jquery.js

这里是否缺少规则中的概念?如何使两个 URL 都起作用?

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    这是由于您在 js/css 等中使用了相对路径而发生的。

    要解决此问题,您可以将其添加到页面 HTML 的 <head> 部分下方:

    <base href="/folder1/folder2/folder3/" />
    

    这样每个相对 URL 都是从该基本 URL 而非当前页面的 URL 解析的。

    【讨论】:

    • 你说得对,我正在使用相对路径来获取资源。但是当斜杠不在 URL 中时,这会受到怎样的影响呢?此外,基本标签并没有解决问题。
    • 它成功了,我一开始没有更新我的资源......谢谢......但是你能解释一下发生了什么
    • 举个例子。如果在http://localhost/folder1/folder2/folder3/contact-us 的页面上没有尾随/,则"../style.css" will be resolved as localhost/folder1/folder2/style.css` 将返回404。使用base 标记,它将正确地在任何相对URL 之前添加基本URL 前缀。
    猜你喜欢
    • 2021-12-14
    • 2015-03-26
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多