Php .htaccess重写错误地将文件名用作文件夹

Php .htaccess重写错误地将文件名用作文件夹,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有一个.htaccess重写,如下所示 RewriteRule ^image/([a-zA-Z0-9]+)\/?$ image.php?q=$1 [NC] 这允许我将domain.com/image/flower.jpg转换为domain.com/image.php?q=flower.jpg 在image.php中,我测试 现在,如果我传递一个图像url“flower.jpg”,我会在“image/flower.jpg”上得到404,这意味着image.php被当作一个文件夹“image”。

我有一个.htaccess重写,如下所示

RewriteRule ^image/([a-zA-Z0-9]+)\/?$ image.php?q=$1 [NC]
这允许我将
domain.com/image/flower.jpg
转换为
domain.com/image.php?q=flower.jpg

在image.php中,我测试


现在,如果我传递一个图像url“flower.jpg”,我会在“image/flower.jpg”上得到404,这意味着image.php被当作一个文件夹“image”。但是如果我添加一个../,它就可以工作了。如何在.htaccess中修复此问题?为了说明图像是一个文件,而不是@Cheery已经提到的文件夹,该模式只识别没有点的文件。要解决这个问题,您可以添加一个点

RewriteRule ^image/([a-zA-Z0-9.]+)/?$ image.php?q=$1
或者允许任何事情

RewriteRule ^image/(.+)/?$ image.php?q=$1

在我看来,htaccess正在工作,您可以从q获得URL信息。更可能的问题是代码引用了错误的图像文件位置目录。以您所说的
为依据。/
解决了这个问题。获取和创建图像的文件结构和代码是什么?image.php和flower.jpg在同一个文件夹中。您的源代码说图像位置在哪里?显示获取和创建图像的代码。$image=$\u GET['q'];echo”;@aVC我可以看到,您的规则对任何带有点的URL都不起作用。这就是为什么您的请求没有进入
image.php
,apache无法找到
image/flower.jpg