Routing .htaccess to GitHub

Routing .htaccess to GitHub

本文关键字:GitHub to htaccess Routing      更新时间:2023-09-26

我想知道是否有一种方法基本上在你的服务器上托管一个网站,这样你就可以运行PHP,但实际的代码托管在GitHub上。换句话说,

如果一个HTTP请求转到:
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服务器,但我宁愿把它放在我的主机上,这样我就可以运行服务器端代码。htaccess代码是什么样子的呢?

如果需要在yourserver.com上的服务器上运行github.com上存储的HTML中嵌入的PHP,只需在.htaccess文件中添加一个重定向这样的配置行,这就超出了.htaccess文件的能力。

.htaccess文件通常用于向Apache web服务器提供指令。例如,这些指令可以指示访问权限、弹出式密码保护、URL和服务器文件系统之间的链接、服务器在交付给浏览器之前获取某些类型文件的处理程序,以及从一个URL重定向到另一个URL。

.htaccess文件可以将http://mysite.com/somedir/another/core.js重定向到https://raw.github.com....但是浏览器会指向raw.github.com,而不是mysite.com。可以用帧做一些技巧,使这种重定向对浏览器中的人来说不那么透明……但这些并不影响数据来自github.com而不去服务器在mysite.com

特别地,PHP标签嵌入在github.com上的HTML永远不会被mysite.com的服务器接收,因此不会运行。可能不是你想要的。除非在Apache中发生了一些大的变化,否则。htaccess文件不会设置该工作流。这可能是一些专家写一个apache模块来做到这一点,但我不确定。

你能做的就是在mysite.com上放一个cron job, git每隔几分钟从github.com上拉出来。也许这就是你想做的?

如果服务器可以运行PHP代码,则可以执行此操作。

基本上,在.htaccess文件中,您使用rewriterrule将所有路径发送到服务器上的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部分非常简单,它只是一个rewriterrule。复杂性在于从GitHub获取文件的PHP脚本。如果你只是做最简单的事情,你的网站可能无法工作,或者它可以工作,但真的非常慢。如果你在这个脚本上做了大量天才级别的工作,你可以让它运行得很好。

现在,这里的目标是什么?为了节省登录到服务器并输入git pull来更新服务器文件的麻烦?我希望我已经说服了你,试图从GitHub上按需获取文件将会更麻烦。