2011-09-04 17 views
1

PHPを実行できるように、基本的にサイトをホストする方法があったのですが、実際のコードはGitHubでホストされていますか?言い換えれば... HTTPリクエストはに行ってきましたルーティング.htaccess to GitHub

場合:
http://mysite.com/docs.html

それは(file_get_contents()か何かを経由して)コンテンツに要求し、引きたい:
https://raw.github.com/OscarGodson/Core.js/master/docs.html

または、場合に彼らはに行ってきました:
http://mysite.com/somedir/another/core.js

それはプルダウンたい: https://raw.github.com/OscarGodson/Core.js/master/somedir/another/core.js

私はGitHubが独自のDNSサーバーを持っていることを知っていますが、IDはむしろサーバー側のコードを実行することができます。これのhtaccessコードはどのように見えますか?

+1

これを行う利点は何ですか?なぜあなたのgitリポジトリをあなたのサーバ上で複製しないのですか? – arnaud576875

+0

PHPスクリプトなどがありますか?私はちょうどFTPを扱って嫌い、私はSSHのアクセスを持っていない共有サーバー上にあるクライアントサイトのためにほぼ完全に私は尋ねる。だから、私はこの再利用可能なhtaccessファイルをアップロードし、それを正しいリポジトリに向けて、次にGitで変更することができると考えました。 –

答えて

4

yourserver.comのサーバーでgithub.comに保存されているHTMLに埋め込まれたPHPを.htaccessファイルのリダイレクトなどの設定行で実行する必要がある場合、これは.htaccessファイルの機能を超えていますファイル。

.htaccessファイルは、通常、Apache Webサーバーにディレクティブを提供するために使用されます。これらのディレクティブは、アクセス許可、ポップアップパスワード保護、URLとサーバーのファイルシステム間のリンク、ブラウザに配信される前にサーバーによってフェッチされた特定の種類のファイルのハンドラ、あるURLから別のURLへのリダイレクトなどを示します。

.htaccessファイルはhttp://mysite.com/somedir/another/core.jshttps://raw.github.com ....のリダイレクトを発行できますが、ブラウザはmysite.comではなく、raw.github.comをポイントします。このリダイレクトをブラウザで人間にはあまり透明ではないようにするために、フレームを使ってトリックを行うことはできますが、mysite.comのサーバーに行くことなくgithub.comからデータが届くことには影響しません。

特に、github.comのHTMLに埋め込まれたPHPタグは、mysite.comのサーバーで受信されないため、実行されません。あなたが欲しいとは思わないでしょう。 Apacheに大きな変更が加えられていない限り、.htaccessファイルはそのワークフローを設定しません。いくつかの専門家がApacheモジュールを作成することは可能かもしれませんが、わかりません。

あなたができることは、gite pull.comがgithub.comから数分ごとにciteジョブをmysite.comに置くことです。おそらくそれは代わりにしたいことでしょうか?

+0

Awh、ありがとう。うーん、ええ...他のサイトからの変更を待っているcronジョブをセットアップする方法はありますか?だから、私が変更を加えると、もう1台のサーバーで変更するのに1時間待たなくてもいいですか?私はJavaScriptの人ですので、n00bのような質問には申し訳ありません。私はJSでこれをすべて行う方法を知っていますが、インデックス可能ではありませんが検索エンジンはありません:\ –

+0

いいえ、あなたはもっと頻繁にcronジョブを実行します.... 5分ごとまたは2分ごとなど。共有ホスティングに参加している場合、制限がある可能性があります。 – Paul

+0

Gitにはサーバフック機能があり、git pushが到着したときに実行されるシェルスクリプトを書くことができます。これはあなた自身のサーバでgitを設定して、あなたのワークステーションで "git push"を使ってそれを押すと便利です。 – Paul

1

サーバがPHPコードを実行できる場合、となります。

基本的に、.htaccessファイルでは、RewriteRuleを使用して、サーバー上のすべてのパスをPHPスクリプトに送信します。たとえば、/somedir/anotherdir/core.jsの要求は/my-script.php/somedir/anotherdir/core.jsになります。これは、多くのアプリフレームワークがどのように動作するかです。 my-script.phpが実行されるとき、「本当の」パスはPATH_INFO変数にあります。

その時点から、スクリプトはGitHubからファイルを取得できます。 HTMLやJavaScript、画像の場合は、クライアントに渡すだけです。 (しかし、正しく動作させるためには、ETagやLast-Modifiedのようにすべての正しいヘッダーを渡してから、それらのファイルもチェックして、キャッシュが正しく機能し、時間がかかりません何度も転送する必要のないファイルを転送します。そうしないと、サイトが実際には遅くなります。)

ファイルがPHPファイルの場合は、ローカルでダウンロードしてから、includeをスクリプトにダウンロードして実行することができます。しかし、この場合、すべてのPHPファイルが自己完結型であることを確認する必要があります。なぜなら、GitHubからどのファイルがフェッチされたのかわからないからです。したがって、あるファイルに別のファイルが含まれている場合、最初のファイルもダウンロードされます。また、これらのファイルに依存するファイルもあります。

つまり、これの.htaccess部分は本当にシンプルです。単なるRewriteRuleです。複雑さは、GitHubからファイルをフェッチするPHPスクリプトにあります。可能な限り単純なことをすれば、あなたのサイトはうまくいかないかもしれませんが、それはうまくいくかもしれませんが、は本当に痛みを伴いゆっくりです。そして、あなたがそのスクリプトで大量の天才的な作業をするなら、あなたはそれをOKにすることができます。

ここで目標は何ですか?サーバにログインしてgit pullと入力してサーバファイルを更新する手間を省くには? GitHubからの要求に応じてファイルを取得しようとするとより多くの問題があると確信しています。

+0

いいえ、私はクライアントのほとんどのサイトにSSHアクセスを持っていません。なぜなら、通常は共有ホスティングのためです。私は100人のFTPユーザー/パスを覚えていません.Gitを使用してGitHubにプッシュし、そのファイルをコピーしてサーバーに貼り付ける必要はありません。私はむしろ、PHPスクリプトをアップロードして、 "x"レポを設定して、更新/変更をリクエストするたびにGitHubにプッシュすることができます。 –

+0

Awhと私は上記を参照してください...それは悪いことです。 –

+0

FTPを使用する必要がある場合は、どこかできれいなgitチェックアウトを行い、デプロイが必要なときは 'git pull'を実行し、FTP経由でサーバにローカルディレクトリを同期させるアプリケーションを使用してください(' .git'ディレクトリ)。可能であれば、あなたのクライアントに、SSHをサポートし、安価で安価なNearlyFreeSpeech.NETのような共有ホストに切り替えるよう説得してください。 SSHを取得したら、git pushやrsyncなどの他の優れたツールを使うことができます。 – benzado

関連する問題