Html 如何重写Web服务器子目录上的绝对资产路径

Html 如何重写Web服务器子目录上的绝对资产路径,html,.htaccess,assets,absolute-path,Html,.htaccess,Assets,Absolute Path,我使用绝对路径来引用css、图像和javascript文件等资产。因此,在index.html的中,我有如下内容: <link href="/assets/css/style.css" rel="stylesheet"> - index.html - assets/ -- css/ --- style.css 假设我的项目目录如下所示: <link href="/assets/css/style.css" rel

我使用绝对路径来引用css、图像和javascript文件等资产。因此,在
index.html的
中,我有如下内容:

<link href="/assets/css/style.css" rel="stylesheet">
- index.html - assets/ -- css/ --- style.css

假设我的项目目录如下所示:

<link href="/assets/css/style.css" rel="stylesheet">
- index.html - assets/ -- css/ --- style.css -index.html -资产/ --css/ ---style.css 这在我的本地Web服务器上运行良好,我使用
指令将文档根目录设置为此目录。但是当我把它放在Web服务器的子目录(例如
http://www.example.com/subdirectory/
),访问
http://www.example.com/subdirectory/index.html

我如何解决这个问题而不必在
index.html
中使用相对路径?它可以通过子目录中的.htaccess文件实现吗?如果是,如何进行

编辑
在Web服务器的根目录级别上还有其他文件夹,这些文件夹不应受到为
/子目录/

发生的任何重定向的影响。您可以将以下内容放在脑海中:

<base href="http://www.example.com/subdirectory/">

如果所有内容都在
子目录下
,则可以使用简单的重写

RewriteEngine on
# don't rewrite, if it is already rewritten
RewriteCond %{REQUEST_URI} !^/subdirectory
# only rewrite requests for files below /assets
RewriteCond %{REQUEST_URI} ^/assets/
RewriteRule ^.*$ /subdirectory/$0 [L]

/assets/css/style.css是一个相对路径,所以我不确定您的意思。@dave这不是真的,它是绝对的,因为它以斜杠开头。解决方案是使用相对路径,尽管您不喜欢它。这是真的,它是相对于文档根的。绝对路径应该包括example.com。你是对的,实际上我使用的是相对路径(/assets/和assets/)都被认为是相对路径。但在其他地方,/assets/被称为最佳实践:这不起作用,如果他的URL是相对的
assets/css/style.css
,它会起作用,但它们是绝对的
/assets/css/style.css
,仍然是相对的。查一下,这个不行。浏览器仍在请求@mediafreakch它在我的测试环境中工作。你在根目录中有.htaccess吗?啊,没有,我把它放在了/子目录中。如果我把它放在根目录中,它基本上可以工作。但现在我明白你所说的“一切都在子目录下”是什么意思了。在我的设置中不是这样的。还有许多其他目录不应该受到影响。我需要如何修改您的解决方案以不影响其他解决方案?@mediafrach您可以将规则限制为
资产
。请参阅更新的答案。嗯……我希望OP在根目录中没有
assets/
目录;)