.htaccess路由到Node App

时间:2018-06-03 04:27:32

标签: node.js apache .htaccess redirect url-rewriting

我正在使用始终运行Apache Web服务器的共享托管服务,因此我无法直接在端口80上运行我的Node.js应用程序。相反,正如我的主机告诉我的,我需要使用.htaccess将传入的请求重定向到我的Node.js应用程序,该应用程序当前正在端口50000上运行。这是他们告诉我使用的.htaccess文件:

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

这种方法效果很好,只有当我尝试转到mydomain.com时,Node应用程序才会看到/index.php的请求。对我的主人的技术支持似乎和我一样困惑。如果我转到mydomain.com/test,那么Node.js应用会看到/test,因此Apache似乎只在根URL上添加index.php。在设置.htaccess文件和Node.js应用程序之前访问该URL的某人是否会出现Apache缓存问题?

更新

此时,似乎没有人知道发生了什么,所以我只想在我的Node应用程序中添加一个'index.php'路由。感谢所有看过并试图提供帮助的人。

2 个答案:

答案 0 :(得分:1)

您可能在DirectoryIndex文件中为index.php设置了apache conf,这可能是您自动获得index.php的原因,您可以做的是设置{{ 1}}对于某些可能不存在的文件名或者如果是apache 2.4,请在DirectoryIndex中使用DirectoryIndex disabled

答案 1 :(得分:1)

这实际上是您要放在 /public_html 目录中的内容

在下面代码的 .htaccess 文件中你会看到

http://127.0.0.1:50000 

(50000) 也是您发送它的端口。您可以在 2 个地方进行更新。

同时更新example.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

DirectoryIndex disabled

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

这是一个带有 nodejs 的 apache 服务器的特定配置。