重写规则,以便正确加载具有绝对路径的css和js文件

时间:2019-03-09 23:13:30

标签: node.js apache .htaccess

我花了2个小时,但我无法弄清楚,也不知道如何用Google搜索解决方案。

这是我的.htaccess文件中的重写规则:

RewriteCond %{REQUEST_URI} ^/blog/(.*)
RewriteRule ^blog/(.*) http://localhost:2368/$1 [P]

当我调用example.com/blog时,它会将我重定向到运行在nodejs(端口2368)中的幽灵博客。

问题:博客本身使用绝对路径加载css和js文件:

<link rel="stylesheet" type="text/css" href="/assets/built/screen.css" />

因此它尝试加载example.com/assets/built/screen.css。

但是该文件可通过example.com/blog/assets/built/screen.css访问

我该如何解决?

1 个答案:

答案 0 :(得分:4)

您有3种选择:

  • 将链接/脚本源更改为/blog/assets/...

  • 将文件位置更改为/assets

  • 使用RewriteRule

.htaccess

RewriteCond %{REQUEST_URI} ^/assets(.*)\.(css|js)$
RewriteRule ^(.*) /blog/$1 [L]

RewriteCond %{REQUEST_URI} ^/blog/(.*)
RewriteRule ^blog/(.*) http://localhost:2368/$1 [P]

这是有效的规则:.htaccess tester

我假设文件是​​由apache2提供的,而不是由node.js中运行的ghost-blog提供的。但是如果是后者,它将仍然有效,因为重定向后它将遵循下一条规则。但是您也可以执行以下操作:

RewriteCond %{REQUEST_URI} ^/assets(.*)\.(css|js)$
RewriteRule ^(.*) http://localhost:2368/$1 [L]