如何使用 htaccess 使某些 javascript 文件从 php 呈现

Posted

技术标签:

【中文标题】如何使用 htaccess 使某些 javascript 文件从 php 呈现【英文标题】:How to make certain javascript files render from php using htaccess 【发布时间】:2016-12-21 01:08:56 【问题描述】:

所以我还没有完全弄清楚在我的 .htaccess 文件中使用的正确结构来实现我想要实现的目标。

我希望发生的是从文件夹(并且只有该文件夹)调用的任何 javascript 文件都是由 php 文件生成的。我不希望有一个 .php 扩展名或为此创建多个文件。

一个例子是

https://www.domain.com/loads/923as0d9f89089asd.js

然后会被发送到类似的地方:

https://www.domain.com/loads/js.php

也不希望在 php 上使用 $_GET 方法。基本上php文件检测文件名,然后从那里做它应该做的事情。

在 .htaccess 文件中进行设置的最佳方法是什么?

谢谢!

【问题讨论】:

将它们重定向到不同的 php 文件并从那里提供它们 你已经看过重写和重定向的 htaccess 概念了吗? 这可能会对您有所帮助:htaccesscheatsheet.com/#rewrite-and-redirection。我有很多例子。 【参考方案1】:

你可以有这样的东西(未经测试,可能需要修改):

RewriteEngine On
RewriteCond %REQUEST_URI ^/loads/(.*).js$
RewriteRule ^/loads/(.*).js$ http://www.domain.com/loads/js.php?file=$1 [P]

您的 js.php 脚本将在内部调用,它将从 GET 接收 JS 文件名,但用户看不到它。 这将使用带有 [P] 标志的 mod_proxy。 更多信息在这里:https://httpd.apache.org/docs/current/rewrite/flags.html#flag_p

【讨论】:

根本不想让它重定向到 php 文件。只想把js引用交给php文件,php文件渲染js。 我的示例代码会做一个不可见的重定向,你的用户的浏览器会看到例如这个 url:www.domain.com/loads/myfile.js 不,您的示例实际上将它们重定向到 php 文件并最终出现在 js.php?file=xxxx 尝试激活 mod_proxy (a2enmod mod_proxy) 并使用 [P] 标志而不是 [L],更多信息在这里:httpd.apache.org/docs/current/rewrite/flags.html#flag_p【参考方案2】:

loads/.htaccess 内你可以使用这条规则:

RewriteEngine On
RewriteBase /loads/

RewriteRule ^[\w-]+\.js$ js.php [L,NC]

在您的js.php 中,您需要使用$_SERVER["REQUEST_URI"] 来获取原始JS 文件名并提供内容。

【讨论】:

这非常接近。当我使用 /loads/jaklsdjfkljklasdf.js 时,我找不到,但如果我使用 /jaklsdjfkljklasdf.js 它实际上允许我在 /loads/js.php 文件中获取 url。希望它来自 /loads/ 目录,而不仅仅是从顶层提供(即:/loads/jojklajklsdjfkl.js 而不是 /jaklsdjfkljaklsdf.js) 如果您按照我在回答中的建议将上述规则放在loads/.htaccess 中,那么它确实适用于/loads/jaklsdjfkljklasdf.js 完美运行!非常感谢。

以上是关于如何使用 htaccess 使某些 javascript 文件从 php 呈现的主要内容,如果未能解决你的问题,请参考以下文章

使用 .htaccess 时如何使 mod_rewrite *not* 执行主目录扩展

htaccess 重写。我不希望所有这些都被重写 - 如何排除某些页面?

如何删除 url codeigniter 路由 htaccess 中的某些部分

如何使这个 .htaccess 规则不区分大小写?

one.com 网络空间上的 htaccess

如何使子目录中的 cakePHP 2.x 出现在根目录中(在 htaccess 中使用 mod_rewrite)? [关闭]