我已经安装了Ghost,它需要运行nodejs。我正在通过托管托管在Apache Linux服务器上执行此操作。他们好心让我使用SSH访问权限登录,因此我已经能够使用标准安装说明来设置nodejs和Ghost。我在我的域的根目录中安装了ghost,因此在正常操作中,有人会去example.com,并向他们显示我的博客。那就是我所希望的。

但是现在,当我开始在浏览器中加载Ghost时,我发现是因为我以自己的方式访问它,并且Ghost不进行服务器配置,所以我似乎需要htaccess文件才能创建该网站可达的。

所以,我创建了这个htaccess文件:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ http://127.0.0.1:65515/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:65515/$1 [P,L]
</IfModule>


将其保存到根目录后,如果我转到example.com/ghost(Ghost的管理面板),则可以正常工作。那里没什么问题,看起来很棒。但是,如果我尝试访问根目录(即goto example.com),而不是向我显示索引,而是向我显示index.js-也就是说,它实际上是加载Ghost的index.js文件的内容并显示而不是对其进行解析。并显示网站的主要索引。

但是,如果我转到www.example.com,则一切正常。所以无论出什么问题,都是因为我没有使用www。在域中。

我希望它可以与URL中的www一起使用,也可以不使用。我确实尝试添加一些解决方案以将非www请求重定向到www.example.com到ehtaccess,但是由于某些原因它仍然不起作用(例如,如果我键入example.com,它不会将我重定向到www.example .com)。

最佳答案

我认为也许您应该使用mod_proxy而不是mod_rewrite。至少,这就是我过去使用的方式。 Apache将捕获来自端口80的请求,然后将其重定向到节点服务器正在侦听的端口65515。

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

像这样:

ProxyPass / http://localhost:65515/

关于node.js - htaccess适用于www.example.com,但不适用于example.com,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41990196/

10-09 20:19
查看更多