【问题标题】:How to prevent HTACCESS from rewriting routes to images in a directory?如何防止 HTACCESS 重写目录中图像的路由?
【发布时间】:2018-09-27 08:57:28
【问题描述】:

我试图在我的 INDEX.php 页面上包含一个图像,但是当我通过在地址栏中输入 url 访问图像时,我的 HTACCESS 阻止了它,它显示一个空白页面

我试图从中获取图像的链接是http://127.0.0.1/ase/ts/

当我访问http://127.0.0.1/ase/ts/help.gif 时,页面加载缓慢,根本没有显示任何内容,只有一个白页。

我根本无法从/ASE/{SUBDIRECTORY}/ 获取文件

/ASE 目录的我的 .HTACCESS 文件

RewriteEngine On

RewriteRule ^(|/)$ index.php?url=$1
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1
RewriteRule ^([^/]+)/([^/]+)$ index.php?url=$1&page=$2 [NC,L]
RewriteRule ^(.*)\.htm$ $1.php [NC]

我认为是因为这条规则。

RewriteRule ^([^/]+)/([^/]+)$ index.php?url=$1&page=$2 [NC,L]

我将127.0.0.1/ase/index.php?url=dash 重写为127.0.0.1/ase/dash127.0.0.1/ase/index.php?url=cmdlogs?p=1127.0.0.1/ase/cmdlogs/1

【问题讨论】:

  • 这不是“阻止”图像......您只是没有考虑到将相对 URL 解析为绝对 URL 的工作原理。
  • google.com/search?q=htaccess%20rewrite%20images%20fail%20load 显示了该主题已经被讨论的频率,所以请您现在就去通知自己。
  • 它们都可以工作,但我看不到来自这个 RewriteRule 的图像 ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1 因为它阻止目录 ts
  • 请解释一下您所说的“阻止”到底是什么意思。除非您收到 403 Forbidden 或类似情况,否则一开始称其为“已阻止”将毫无意义。我的猜测是,你实际上得到了 404,因为......(我在第一条评论中已经说过了。)
  • 我得到一个空页面,因为链接不起作用,但只有图像链接是空的

标签: php html .htaccess


【解决方案1】:

您要问的是:如果文件存在则避免重定向。

在这种情况下,在有问题的 RewriteRules 之前添加这一行:

RewriteCond %{SCRIPT_FILENAME} !-f 

这将准确检查并跳过您的重写。 请注意,现在只会将原本会给您 404 的路由重写到您的索引文件中,因此请确保您的公用文件夹周围没有太多文件。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
相关资源
最近更新 更多