如何在webserver子目录中重写绝对资产路径

时间:2013-04-29 19:24:42

标签: html .htaccess assets absolute-path

我使用绝对路径来引用css,图像和javascript文件等资源。所以在<head>的{​​{1}}我有类似的东西:

index.html

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

- index.html
- assets/
-- css/
--- style.css

这在我的本地网络服务器上工作正常,我使用<link href="/assets/css/style.css" rel="stylesheet"> 指令将文档根目录设置到此目录。但是当我把它放在网络服务器的子目录(例如<virtualhost>)上时,它在访问http://www.example.com/subdirectory/时不再找到资产。

如何在http://www.example.com/subdirectory/index.html中不必使用相对路径的情况下解决这个问题?可以通过子目录中的.htaccess文件来实现吗?如果是,怎么样?

修改

网络服务器的根级别上还有其他文件夹,不应受index.html

的任何重定向影响

2 个答案:

答案 0 :(得分:3)

如果所有内容低于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]

答案 1 :(得分:0)

你可以把它放在脑子里:

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