【问题标题】:RewriteRule 123456.js for js.php?arg=123456RewriteRule 123456.js 为 js.php?arg=123456
【发布时间】:2020-01-04 19:19:25
【问题描述】:

我基本上需要这个:How to make certain javascript files render from php using htaccess

...但是在我的 PHP 脚本中使用重写的 .js 文件名中的 $_GET 参数

所以:

http://localhost/123456.js

...将被重写以使其正常工作:

http://localhost/js.php?arg=123456

...123456 可以是任何东西...

...在一个 .php 文件中,该文件将 SEEMS 返回到网络成为一个 .js 文件,像这样...

js.php 内容:

<?php
$arg = $_GET['arg']
echo "loadCSS(\"$arg.css\");"
?>

...希望使用它来嵌入 .js 路径,如下所示:

<script type="text/javascript" src="http://localhost/123456.js"></script>
  1. .htaccess 应该写什么?
  2. 我的 PHP 脚本或其他地方应该有什么不同吗?

这也没有帮助:How to output a javascript file from a PHP file that can be referenced from a script include tag

【问题讨论】:

  • 到目前为止你尝试过什么?在 SO 上有很多这样的 HTTPd 重写示例(包括在您链接到的第一个 SO 帖子中)。
  • 我尝试了这两种方法,以及许多其他方法,一些教程并不断搜索,但没有找到将基本文件名专门转换为 $_GET 变量的东西。
  • 您发布的第一个链接的答案确实如此......
  • ...好吧,也许吧。但是,它应该被删除,因为它没有回答非 $_GET 问题,并且它依赖于一个域。我会考虑,但这不是这个公认的答案,也不是我需要的答案。

标签: php apache mod-rewrite get


【解决方案1】:

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # if the request file doesn't exists
RewriteCond %{REQUEST_FILENAME} !-d # and isn't a dir
RewriteRule ^([^/]*)\.js$ /js.php?arg=$1 [L]

您的 php 脚本应该可以工作。对于 mod_rewrite 的初学者我推荐这个工具:https://www.generateit.net/mod-rewrite/index.php

【讨论】:

  • 我必须将 /js.php?arg=$1 更改为 js.php?arg=$1 才能正常工作。而且,在我的本地桌面 Ubuntu 开发服务器上,如果我将 REQUEST_FILENAME 行与任何其他 RewriteRules 一起使用,它们会破坏我的服务器。
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 2011-02-28
  • 2019-03-08
  • 2022-10-23
相关资源
最近更新 更多