2

私は Web サイトのコンテンツが Apache サーバーの背後にある PHP(CodeIgniter) に基づいているプロジェクトに取り組んでおり、今後のモバイル バージョンのアプリの API として node.js を作成することが私の義務です。(注意してください、私たちのホスティングは管理されています。virtualhost にアクセスできないため、proxypass を使用することはできません)

「ドメイン名/api」のような URL で、ノード ファイルを Apache の背後で実行する必要があります。上記の URL が呼び出されると、Apache はこの要求をノードが存在する localhost:port にブリッジする必要があります。

ここに私のnode.jsファイルがあります:

var fs = require('fs');
var http = require('http');
var app = require('express')();
var options = {
};

app.get('/', function (req, res) {
       res.send('Hello World!');
});

http.createServer( app).listen(61000, function () {
       console.log('Started!');
});

ここに私の .htaccess ファイルがあります:

RewriteEngine on 
RewriteRule ^$ /index.php [L] 
RewriteCond %{HTTP_HOST} !^ourdomainname\.com
RewriteRule (.*) http://ourdomainname.com/$1 [R=301,L]
RewriteCond $1 !^(index\.php|info.php|resource|system|user_guide|bootstrap|robots\.txt|favicon\.ico|google<somevalues>.html) 
RewriteRule ^(.*)$ /index.php/$1 [L]

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

ノードはローカルで (マネージド ホスティング サーバー上で) 動作しますが (「lynx localhost:61000/」を呼び出して適切な出力を確認できます)、外部ローカルでは動作しません。「ourdomainname.com:61000/api」へのすべての呼び出しは、node.js ファイルではなく、CodeIgniter (PHP) に送信されます。

どんな助けでも大歓迎です。

4

1 に答える 1

1

ワードプレス アプリケーションと一緒に Node.js を実行すると、同様の問題が発生しました。ルートにWordpress www.website.com/api、. これが私たちの.htaccessファイルのコピーです。私たちはこれにかなり苦労しました。最終的に機能したのは (stackoverflow に関する提案のおかげで)、/apiリダイレクトをファイルの先頭に移動することでした。また、ディレクトリ API の前の最初の「/」は必要ありません。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^api/(.*)?$ http://127.0.0.1:51900/$1 [P,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

お役に立てれば!

于 2016-10-27T22:45:48.543 に答える