htaccess可与www.example.com合作,但不适用于example.com

时间:2017-02-01 21:34:39

标签: node.js .htaccess ghost

我安装了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>

如果我保存到root,如果我转到example.com/ghost(Ghost的管理面板),它就可以了。没错,看起来很棒。但是,如果我尝试访问root,即goto example.com,而不是向我显示索引,它会显示index.js - 也就是说,它实际上加载了Ghost的index.js文件的内容并显示它而不是解析它并显示网站的主索引。

如果我去www.example.com然后一切正常。所以无论问题是什么,因为我没有使用www。在域中。

我希望它可以在URL中使用或不使用www。我确实尝试添加一些解决方案来将非www请求重定向到www.example.com到ehtaccess但由于某种原因它仍然无法正常工作(如果我键入example.com它不会重定向我到www.example.com)。

2 个答案:

答案 0 :(得分:1)

我想也许你应该使用mod_proxy而不是mod_rewrite。至少,这就是我过去使用过的东西。 Apache将捕获端口80上的请求,然后将它们重定向到节点服务器正在侦听的端口65515。

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

像这样:

ProxyPass / http://localhost:65515/

答案 1 :(得分:0)

我明白了。与htaccess,Ghost或nodejs或类似的东西没有任何关系。不,问题是sodding服务器缓存网站。我发现了删除缓存的设置,它开始工作正常,所以现在已经解决了。