2016-09-02 10 views
1

ウェブサイトのコンテンツがApacheサーバーの背後にあるPHP(CodeIgniter)に基づいているプロジェクトに取り組んでいる。私は、node.jsをAPIとして書いている次のモバイル版のアプリに (私たちのホスティングは管理されており、私たちはvirtualhostにアクセスすることはできませんので、proxypassを使用することはできません)Apacheの背後でNode.jsを実行する。PHPと.htaccessの設定

"domainname/api"のようなURLで私のノードファイルをApacheの背後で実行する必要があります。 このURLが呼び出されると、Apacheはこの要求をlocalhost:portにブリッジしなければなりません。ここで

私のNode.jsのファイルです:ノードが(私たちのマネージドホスティングサーバ上で)ローカルに動作しますが(私は「オオヤマネコを呼び出すことができます

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] 

:ここ

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ファイルでありますlocalhost:61000/"、適切な出力を参照してください)、ローカルの外部では動作しません。 "ourdomainname.com:61000/api"への私たちの呼び出しはすべてCodeIgniter(PHP)に送られ、node.jsファイルには送られません。

何か助けていただければ幸いです。

答えて

0

私は、Wordpressアプリケーションの横にNode.jsを実行することに似た問題がありました。ワードプレスはルートに、ノードアプリは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> 

これが役立ちます。

関連する問題