.htaccess重写文件夹的错误文件名

时间:2014-10-31 04:33:20

标签: 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中,我测试<img src="$_GET['q']">

现在,如果我传递图像网址&#34; flower.jpg&#34;,我会在#34; image / flower.jpg&#34;上获得404,这意味着image.php将被视为文件夹& #34;图像&#34 ;.但是如果我添加一个../,它就可以了。我怎样才能在.htaccess中解决这个问题?告诉该图像是文件,而不是文件夹

1 个答案:

答案 0 :(得分:0)

正如@Cheery已经提到的,该模式仅识别没有点的文件。要解决此问题,您可以添加一个点

RewriteRule ^image/([a-zA-Z0-9.]+)/?$ image.php?q=$1

或允许任何内容

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