如何避免 htaccess 重写规则修改 php 上的链接


How to avoid htaccess rewrite rule from modifiying link on php

好吧,所以我在 Htaccess 上有很多这个

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index2.php?url=$1

我正在尝试在 php 文件中执行以下内容

mime_content_type('Doggy.png')

它返回一个错误,指出找不到文件的路径,我很确定它确实存在,试图找到错误可能是什么,我最终认为这是htaccess。

谁能帮我解决这个问题?

提前谢谢你。

不,这不是你的 .htaccess 规则。这些仅将 HTTP 请求重写为文件执行规则。一旦你的PHP执行,他们就不再有任何影响了。

问题只是文件Doggy.png相对于执行此命令的文件不存在。该文件必须与 index2.php 位于同一目录中,假设该文件包含行mime_content_type('Doggy.png')。否则,您需要使用相对路径,如 mime_content_type('../Doggy.png')mime_content_type('img/Doggy.png')

正如我们已经建立的那样,问题不在于重写规则。

真正重要的不是文件的相对位置,而是图像文件相对于工作目录的位置。

例如,如果您的目录结构为:

/
/index.php
/inc/imagelib.php
/inc/Doggy.png

并且您正在从imagelib.php对Doggy进行操作,但它实际上包含在index.php并且您的工作目录/然后,尽管位于同一文件夹中,但您需要将文件寻址为inc/Doggy.png

工作目录可能会更改,具体取决于您在程序中的入口点(对于 Web 应用程序 - 最初获取请求的文件在哪里),或者(在命令行的情况下),执行命令时您在 shell 中的位置。

为了避免相对路径的问题,我建议使用绝对路径。

因此(假设与上一个示例中的场景相同),在imagelib.php中,您需要像这样构造图像路径的路径:

`$absolute_path = dirname(__FILE__)."/Doggy.png"`