【问题标题】:.htaccess RewriteRule blocked/ignored for .css and .js extension?.css 和 .js 扩展名的 .htaccess RewriteRule 被阻止/忽略?
【发布时间】:2020-05-30 01:24:00
【问题描述】:

我切换了服务器,突然我的一些 .htaccess 规则停止工作。其中之一是将/scripts.js 重定向到我的/includes/load_js.php 文件的波纹管。

# NOT WORKING
RewriteCond %{REQUEST_URI} scripts.js
RewriteRule . includes/load_js.php [L]

奇怪的是,如果(仅出于测试目的)我将规则从 scripts.js 重命名为 scripts.tst 然后可以正常工作,我可以将扩展名更改为除 .js.css 之外的任何内容并且正在工作,否则对于 .js.css 我得到 404 Not Found。

# WORKING BUT NOT NEEDED, I NEED .JS
RewriteCond %{REQUEST_URI} scripts.tst
RewriteRule . includes/load_js.php [L]

非常感谢任何帮助! 谢谢!

【问题讨论】:

  • 我们需要查看您的完整重写配置,以确定是否有任何其他规则可能会干扰。
  • 仅供参考,您不需要 RewriteCond 来检查 URL path,RewriteRule 可以自行匹配。
  • 感谢您的回答,出于测试目的,我只在 .htaccess 文件中保留了该规则,因此没有其他规则干扰。服务器之间的唯一区别是新服务器(规则不起作用)实际上是 NGINX。是否可以将其配置为限制 JS/CSS/JPG 重写?我以前没有使用 NGINX 的经验,也不知道是否建议将其与 .htaccess 混合,但我无权访问 nginx.conf 文件。所以基本上该规则适用于任何文件扩展名,除了 .js/.css/,jpg 这就是为什么我猜是一些服务器限制?谢谢!
  • 嗯?据我所知,NGINX 不关心 .htaccess 文件。如果您安装了任何特定模块以使其实际使用它们,那么您需要将该信息添加到您的问题中。
  • 我无权访问服务器,客户端只是给了我 FTP 访问权限,我已将文件从旧服务器上传到新服务器,我检查了 phpinfo(),我看到了服务器已安装:Apache 2.0 HandlerServer API: FPM/FastCGI。我想我将不得不联系网站管理员以获得更多澄清。到目前为止,感谢您的帮助,当我找到解决方案时,我会回来更新我的问题。谢谢!

标签: javascript php .htaccess mod-rewrite http-status-code-404


【解决方案1】:

看起来服务器同时运行 Nginx 和 Apache,并且在提供文件时存在某种冲突。虽然 Apache 使用我的 .htaccess 文件成功地兑现了一些重定向,但另一方面,另一些则被 NGINX(*.jpg、*.png、*.js、*.css)“偷走”,这样请求就永远不会甚至有机会访问我的 .htaccess 来处理重定向规则。

TL;DR:服务器配置:Apache 和 NGINX == NO-NO,导致争夺请求,没有人获胜。

“解决方案” 注意引号):WebMaster 删除了 NGINX,只有 Apache 仍然存在,这样,处理我的 .htaccess 和所有规则的工作方式在以前的服务器上。

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多