我有一些由PHP生成的javascript。目前,我在html中包含javeascript,使用
<script type="text/javascript" src="js/script.php">但是我想用
<script type="text/javascript" src="js/script.js">现在script.js不存在了,但我希望它在用户不知道的情况下重定向到script.php。
这可以用.htaccess来完成吗?
发布于 2010-07-23 08:07:37
如果你的web服务器支持mod_rewrite,你可以这样做:
RewriteEngine On
RewriteRule ^js/script\.js$ js/script.php如果您有多个脚本,您可以通过使用来自测试模式的反向引用来泛化RewriteRule:
RewriteRule ^js/(.*)\.js$ js/$1.php发布于 2015-04-10 20:56:14
在父目录中,您可以有一个.htaccess,它将所有资产文件映射到相关的php文件。
RewriteEngine on
RewriteRule ^js/(.*)\.js$ js/$1.js.php
RewriteRule ^css/(.*)\.css$ css/$1.css.php请注意,为了提高可读性,我保留了文件扩展名。
文件
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
内容类型
js/*.js.php -> header("Content-type: text/javascript");
css/*.css.php ->header("Content-type: text/css");缓存
*.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
内容类型
<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>缓存
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>发布于 2010-07-23 08:12:01
如果你只想让你的脚本src以".js“结尾,你可以把它作为一个.php文件来链接,如下所示:
<script type="text/javascript" src="js/script.php?name=script.js">此技术通常与php或其他生成图像的脚本一起使用:
<img src="images/thumbnailer.php?x=foo.jpg">这样,如果浏览器试图通过“扩展名”确定文件的类型,它将被“欺骗”使用正确的格式。
https://stackoverflow.com/questions/3314408
复制相似问题