2016-08-14 73 views
3

所以我还没有弄清楚在我的.htaccess文件中使用正确的结构,我期望实现。如何使某些JavaScript文件从PHP使用htaccess呈现

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

一个例子是

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

将被发送一样的东西:

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

并不想对PHP的使用$ _GET方法无论是。基本上,php文件检测文件名,然后从那里做它应该做的。

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

谢谢!

+0

将它们重定向到一个不同的php文件并从那里为它们服务 –

+0

你已经看过Rewrite和Redirects的htaccess概念了吗? – KumarM

+0

这可能会帮助你:http://htaccesscheatsheet.com/#rewrite-and-redirection。我有很多例子。 – KumarM

回答

1

里面loads/.htaccess您可以使用此规则:

RewriteEngine On 
RewriteBase /loads/ 

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

里面你js.php你需要使用$_SERVER["REQUEST_URI"]获得原始JS文件名和服务内容。

+0

非常接近。当我使用/loads/jaklsdjfkljklasdf.js时,我得到一个未找到的,但是如果我做了/jaklsdjfkljklasdf.js,它实际上允许我在/loads/js.php文件中获取URL。希望它来自/ loads /目录,而不仅仅是从顶层提供服务(例如:/loads/jojklajklsdjfkl.js而不是/jaklsdjfkljaklsdf.js) – MrTechie

+0

如果将以上规则放在'loads/.htaccess'中作为我在回答中建议,它确实可以用于'/ loads/jaklsdjfkljklasdf.js'。 – anubhava

+1

完美的作品!非常感谢。 – MrTechie

0

你可能有这样的事情(未经测试,可能需要修改):

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

而且你js.php脚本将被内部调用,它将接收来自拿到JS文件名,但它由不可见用户。
这将使用mod_proxy和[P]标志。
更多的信息在这里:https://httpd.apache.org/docs/current/rewrite/flags.html#flag_p

+0

不希望重定向到php文件。只需要将js引用传递给php文件,并将php文件渲染为js。 – MrTechie

+0

我的例子代码会做一个不可见的重定向,你的用户的浏览器会看到例如这个URL:www.domain.com/loads/myfile.js – Marc

+0

不,你的例子实际上将它们重定向到php文件,并最终在js.php ?file = xxxx – MrTechie