首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将script.js重定向到script.php

问将script.js重定向到script.php
EN

Stack Overflow用户
提问于 2010-07-23 07:49:02
回答 3查看 2.8K关注 0票数 3

我有一些由PHP生成的javascript。目前,我在html中包含javeascript,使用

代码语言:javascript
复制
<script type="text/javascript" src="js/script.php">

但是我想用

代码语言:javascript
复制
<script type="text/javascript" src="js/script.js">

现在script.js不存在了,但我希望它在用户不知道的情况下重定向到script.php。

这可以用.htaccess来完成吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-23 08:07:37

如果你的web服务器支持mod_rewrite,你可以这样做:

代码语言:javascript
复制
RewriteEngine On

RewriteRule ^js/script\.js$ js/script.php

如果您有多个脚本,您可以通过使用来自测试模式的反向引用来泛化RewriteRule:

代码语言:javascript
复制
RewriteRule ^js/(.*)\.js$ js/$1.php
票数 7
EN

Stack Overflow用户

发布于 2015-04-10 20:56:14

在父目录中,您可以有一个.htaccess,它将所有资产文件映射到相关的php文件。

代码语言:javascript
复制
RewriteEngine on
RewriteRule ^js/(.*)\.js$ js/$1.js.php     
RewriteRule ^css/(.*)\.css$ css/$1.css.php

请注意,为了提高可读性,我保留了文件扩展名。

文件

代码语言:javascript
复制
htdocs
    mysite
        assets
            .htaccess
            js->
                script.js.php ( http://locahost/mysite/assets/js/script.js )
            css->
                style.css.php ( http://locahost/mysite/assets/css/style.js )

标头

默认情况下,文件将输出为php,您必须将内容类型标头更改为正确的类型(js、css、txt、xml等)。

您可能还希望禁止缓存这些文件,因为它们很可能经常更改。

您可以在所有php文件或.htaccess文件中执行此操作。

PHP

内容类型

代码语言:javascript
复制
js/*.js.php -> header("Content-type: text/javascript");
css/*.css.php ->header("Content-type: text/css");

缓存

代码语言:javascript
复制
*.php -> header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
*.php -> header('Pragma: no-cache'); // HTTP 1.0.
*.php -> header('Expires: 0'); // Proxies.

.htaccess

内容类型

代码语言:javascript
复制
<FilesMatch \.js.php$>
  Header set Cache-Control "no-transform"
  Header set Content-Type "application/javascript; charset=utf-8"
</FilesMatch>
<FilesMatch \.css.php$>
  Header set Cache-Control "no-transform"
  Header set Content-Type "text/css; charset=utf-8"
</FilesMatch>

缓存

代码语言:javascript
复制
<IfModule mod_headers.c>
  Header set Cache-Control "no-cache, no-store, must-revalidate"
  Header set Pragma "no-cache"
  Header set Expires 0
</IfModule>
票数 0
EN

Stack Overflow用户

发布于 2010-07-23 08:12:01

如果你只想让你的脚本src以".js“结尾,你可以把它作为一个.php文件来链接,如下所示:

代码语言:javascript
复制
<script type="text/javascript" src="js/script.php?name=script.js">

此技术通常与php或其他生成图像的脚本一起使用:

代码语言:javascript
复制
<img src="images/thumbnailer.php?x=foo.jpg">

这样,如果浏览器试图通过“扩展名”确定文件的类型,它将被“欺骗”使用正确的格式。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3314408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档