【问题标题】:Fix absolute paths moving from root to subfolder using .htaccess使用 .htaccess 修复从根目录移动到子文件夹的绝对路径
【发布时间】:2018-09-03 12:11:12
【问题描述】:

网站目前已从生产服务器移至开发服务器。所以之前的设置是http://production.com/,现在开发设置是http://development.com/site/

我的问题是几乎所有资产都指向绝对路径,例如 js、css 和图像。

例子:

JS:<script src="/assets/path/to/js/script.js"></script>

CSS:<link rel="stylesheet" type="text/css" href="/assets/path/to/css/style.css" />

图片:<img src="/assets/path/to/images/image.jpg">

所有这些资产都不会加载,因为它们都指向http://development/assets/。应该是http://development/site/assets/

有没有办法使用 htaccess 来解决这个问题?我不想绕过站点并将所有路径更改为相对路径,因为这将是一项艰巨的工作。我只是想使用一些简单的东西,这样当移回不再位于子文件夹中的生产环境时,只需更改 htaccess 文件就可以更容易地迁移。

附: htaccess 应该在子文件夹 /site/ 中,因为我不想将它放在开发根目录中,因为它会影响开发根目录中的其他子文件夹。

谢谢。

【问题讨论】:

  • /assets/path/to/js/script.js URL 是 relative,不是绝对的。
  • 它有点落入绝对路径,因为它加载 http://development.com/assets/path/to/js/script.js 而不是相对于当前 URL w/c 应该是 http://development/site/assets/path/to/js/script.js @Alexander 如果你知道如何解决这个问题,请它会一个很大的帮助。谢谢
  • 现在我明白了,您想将 site 分段“插入”到 URL,不是吗?
  • 你最好有一个带有 base_url 变量的配置文件,你可以在每个页面上使用它来与你的相对 url 结合,这样下次你移动到另一个位置时,所有 url 都会自动运行而不会出现问题。当您移动到另一个位置时,您只需更新该变量。
  • 你在你的网站中使用和<base>标签吗?

标签: php html css .htaccess


【解决方案1】:

您可以使用以下方法之一:

  1. 在 .htaccess 文件中创建重写规则:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/site/
    RewriteRule ^/(.*)$ /site/$1 [QSA,L]
    
  2. 使用将root application URL 设置为页面基本URL 的<base> HTML 标记。

【讨论】:

  • 两者都不起作用。 1. 你上面写的.htaccess 规则似乎不起作用。 2. 也不起作用,因为源路径以正斜杠开头,即 /assets/path/to/images/ 。这仅适用于路径不以正斜杠开头的情况,例如 assets/path/to/images/
猜你喜欢
  • 2019-01-07
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 2012-07-21
  • 1970-01-01
相关资源
最近更新 更多