使用htaccess将keystone app重定向到子目录

时间:2015-06-09 13:19:27

标签: apache .htaccess mod-rewrite keystonejs

我是htaccess的新手。我正在使用Keystone.js,我开发了一个正在侦听端口3000的博客。就像这样:

https://localhost:3000

现在一切都很好。但我想要的是我的博客应该在这个网址上运行:

https://localhost/blog

我如何实现这种情况,我提供" https://localhost/blog "它应该像" https://localhost:3000 "一样工作。在这种情况下,网址将保持不变:https://localhost/blog

此外,我还希望当用户访问此网址时:" https://localhost:3000 ",它应该重定向到:" {{ 3}} "

如何实现这种情况?我想要的只是从URL隐藏一个端口。

我已经尝试了很多可以解决的问题,但它并不适用于我。 像这样:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^blog(.*) http://localhost:3000/$1 [P,L]

好的,现在关于代码的代码对于主页是完美的,例如:https://localhost/blog,因为我在htaccess中添加了一个规则。但问题是所有的链接,图像&包含的文件在我的博客中被破坏。

现在我使用了基本标签来解决这个问题。但它将我的链接转换为这种格式:

http://localhost:3000/contact
http://localhost:3000/help
http://localhost:3000/post

我在页面标题中将https://localhost/blog视为基本标记。 你可以看到3000端口再次出现在我不想显示的网址中。它应该是:

http://localhost/blog/contact
http://localhost/blog/help
http://localhost/blog/post

2 个答案:

答案 0 :(得分:1)

这是在端口80上运行Node的最安全,最简单的方法:

登录服务器并发出以下命令:

$ sudo apt-get install libcap2-bin
$ sudo setcap cap_net_bind_service=+ep /usr/local/bin/node

注意:将上面的节点路径更改为键入which node 时显示的内容

现在,当您告诉Node在端口80上运行时,它不会抱怨。而且您不必处理Apache或Nginx,以root身份运行您的应用程序,或担心端口转发。

答案 1 :(得分:1)

我建议使用NGINX来解决这个问题。您可以查看这些链接:

https://allaboutghost.com/how-to-proxy-port-80-to-2368-for-ghost-with-nginx/

Node.js + Nginx - What now?