htaccess与www.example.com,但不是example.com

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

但是现在当我在浏览器中加载Ghost的时候,我发现,因为我按照自己的方式访问Ghost,并且Ghost没有configuration服务器,所以我似乎需要一个htaccess文件才能使网站到达。

所以,我创build了这个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的pipe理面板),它的工作原理。 没有错,看起来不错。 但是,如果我尝试访问根目录(即goto example.com),而不是向我显示索引,则会显示index.js – 即从字面上加载Ghost的index.js文件的内容并显示它,而不是parsing它并显示该网站的主要索引。

但是,如果我去www.example.com那么一切正常。 所以不pipe是什么问题是因为我没有使用www。 在域中。

我宁愿它在URL中使用或不使用www。 我曾尝试添加一些解决scheme,将www.example.com的非www请求redirect到ehtaccess,但由于某种原因,它仍然不起作用(如果我inputexample.com,它不会将我redirect到www.example .COM)。

我想也许你应该使用mod_proxy而不是mod_rewrite。 至less,这是我过去使用过的。 Apache将捕获端口80上的请求,然后将其redirect到节点服务器正在侦听的端口65515。

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

喜欢这个:

ProxyPass / http://localhost:65515/

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