使用htaccess重定向到nodejs app

时间:2015-07-13 15:07:53

标签: node.js apache .htaccess mod-rewrite

我试图运行我在我们的服务器上使用forever在nodejs中编写的小应用程序。当我像这样开始我的应用程序时:

forever app.js

在我的文件夹/home/me/apps/myapp/中,应用正在侦听端口61000

mydomain.me/myapp/下我的.htaccess文件的内容应该是什么?

当前.htaccess内容(无效):

RewriteEngine On
# Redirect a whole subdirectory:
RewriteRule ^myapp/(.*) http://localhost:61000/$1 [P]

2 个答案:

答案 0 :(得分:3)

您应该使用Apache mod_proxy而不是mod_rewrite在Apache中运行Node.js应用程序:

<VirtualHost :80>
    ServerName example.com

    ProxyRequests off

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    <Location /myapp>
        ProxyPass http://localhost:61000/
        ProxyPassReverse http://localhost:61000/
    </Location>
</VirtualHost>

如果您无法为您的Node应用添加虚拟主机,可以尝试使用htaccess,如下所示:

RewriteEngine On

RewriteRule ^/myapp$ http://127.0.0.1:61000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/myapp/(.*)$ http://127.0.0.1:61000/$1 [P,L]

答案 1 :(得分:2)

我会回答我自己的问题,即使我认为Michelems的答案也是正确的。

我的初始.htaccess文件有效。

RewriteEngine On
RewriteRule ^myapp/(.*) http://localhost:61000/$1 [P]

我做错的事情是创建文件夹mydomain.de/myapp/并将.htaccess放在那里。我现在在DocumentRoot / .htaccess中有reirte设置,没有名为myapp的公共文件夹,并且工作正常。