Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 重写规则,以便正确加载具有绝对路径的css和js文件_Node.js_Apache_.htaccess - Fatal编程技术网

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

Node.js 重写规则,以便正确加载具有绝对路径的css和js文件,node.js,apache,.htaccess,Node.js,Apache,.htaccess,我花了2个小时,但我想不出来,我也不知道如何用谷歌搜索解决方案 这是我在.htaccess文件中的重写规则: RewriteCond %{REQUEST_URI} ^/blog/(.*) RewriteRule ^blog/(.*) http://localhost:2368/$1 [P] 当我调用example.com/blog时,它会将我的日志重定向到在nodejs(端口2368)中运行的ghost日志 问题在于:博客本身加载的css和js文件具有绝对路径: 因此它尝试加载example

我花了2个小时,但我想不出来,我也不知道如何用谷歌搜索解决方案

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

RewriteCond %{REQUEST_URI} ^/blog/(.*)
RewriteRule ^blog/(.*) http://localhost:2368/$1 [P]
当我调用example.com/blog时,它会将我的日志重定向到在nodejs(端口2368)中运行的ghost日志

问题在于:博客本身加载的css和js文件具有绝对路径:

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

但是可以在example.com/blog/assets/build/screen.css上访问该文件


我如何解决这个问题?

您有三种选择:

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

  • 将文件位置更改为
    /assets

  • 使用
    重写规则

.htaccess

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

RewriteCond %{REQUEST_URI} ^/blog/(.*)
RewriteRule ^blog/(.*) http://localhost:2368/$1 [P]
以下是有效的规则:

我假设这些文件是由apache2提供的,而不是运行在node.js中的
ghost blog
。但如果是后者,它仍然会工作,因为重定向后它将进入下一个规则。但您也可以执行以下操作:

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

好的,规则的前两行将让每个请求以css&js重定向到blog/reuest结束,注意第二条规则将再次将reuqest重定向到localhost:2368/reuest而不使用bolg,所以同样的问题我知道我的规则在做什么,我甚至提供了一个测试人员。这个解决方案(还有另一个)对我来说似乎是一项工作。前两个选项是不可能的,因为它不是我的代码。如果我编辑了它,并且出现了一个新版本,我必须再次编辑文件。重写规则解决了1个问题,但出现了一个新问题。该站点上有很多指向/foobar的链接。但我的文件位于/blog/foobar。这是否可以通过
RewriteBase/
解决?@Alpha几乎可以肯定的是,您使用的任何库/框架都有一个应用程序根目录的设置,因此您不必模拟重写或重定向。因此,如果您只是问“如何更改框架XYZ中的根目录?”我已经告诉了您我的建议,那么您可以更快、更清晰地解决问题。提出一个标题为“如何更改XYZ中的根目录”的新问题,其中XYZ是生成链接的框架/库/平台。不可能知道如何“真正”修复链接,因为您还没有告诉是什么生成了链接。