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

时间:2012-07-03 14:43:26

标签: php file .htaccess rewrite

好吧,我几乎在Htaccess上有这个

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

我正试图在php文件中执行以下

mime_content_type('Doggy.png')

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

有人可以帮我解决这个问题吗?

先谢谢你。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

/
/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"`