php - 使用 htaccess 将 Javascript 转换为 php 处理程序页面

标签 php javascript apache .htaccess

我尝试这样做是......

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule \.js$ js.php [L]   ## This line is the one I tried to add
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

如果我使用标签<script type='text/javascript' src='http://www.domain.net/myfile.js'></script>我希望它通过 js.php .

js.php 将使用 header('....'); echo file_get_contents('myfile.js'); 处理文件

我尝试了很多方法来做到这一点,我以前在一个项目中做过这个,但我不记得现在在哪里了,因为我必须重做:)

希望这是有道理的......

最佳答案

您可以添加以下重写规则:

RewriteRule ^([^\.]+)\.js$ js.php [NC,L]

代替:

RewriteRule \.js$ js.php [L]   ## This line is the one I tried to add

结果是:

http://www.domain.net/myfile.js => http://www.domain.net/js.php
http://www.domain.net/foo/bar/myfile.js => http://www.domain.net/js.php

或者您可以执行以下操作:

RewriteRule ^([^\.]+)\.js$ $1.php [NC,L]

结果是:

http://www.domain.net/myfile.js => http://www.domain.net/myfile.php
http://www.domain.net/foo/bar/myfile.js => http://www.domain.net/foo/bar/myfile.php

关于使用RewriteRule flags的一些解释:

  • NC :使用[NC]标志会导致RewriteRule以不区分大小写的方式进行匹配。也就是说,它不关心匹配的 URI 中字母是大写还是小写。
  • L :[L] 标志导致 mod_rewrite 停止处理规则集。在大多数情况下,这意味着如果规则匹配,则不会处理更多规则。这对应于 Perl 中的最后一个命令,或 C 中的中断命令。使用此标志指示应立即应用当前规则,而不考虑进一步的规则。

关于php - 使用 htaccess 将 Javascript 转换为 php 处理程序页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295296/

相关文章:

php - Facebook PHP SDK 报错

javascript - 解析html资源时如何使apache区分大小写

php - Mysql查询Ask-Answer-Comment数据库

php - 为什么此 Javascript 重定向代码在 Internet Explorer 8 中不起作用?

php - mySQL - 按最大日期选择并获取相应行的其他字段

javascript - 为什么单击链接会转到页面顶部?

javascript - 使用 dispatchEvent 以编程方式将键发送到输入

javascript - '$.fn' 为空或不是对象

java - Restful api GET 请求出现 504 错误的原因是什么?

javascript - 只允许在特定时间访问网站?