Apache – 用.htaccess重写图片到php文件

我正在寻找一种方法来重写所有的图像请求从一个文件夹some.php文件,同时保留原始图像的url(或部分path)。

所以,

example.com/folder/img/test.jpg 

会被重新编写成类似的东西

 example.com/folder/some.php?img=img/test.jpg 

(这是最好的办法?)

我不熟悉正则expression式,所以我会非常感谢:)

注意:我已经尝试了一些解决scheme之前,他们都没有工作。 另外,我在CentOS环境下运行Apache 2.0

通过httpd.conf启用mod_rewrite和.htaccess,然后把这个代码放在你的.htaccess下的DOCUMENT_ROOT目录下:

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteRule ^(folder)/(img/[^.]+\.jpg)$ $1/some.php?img=$2 [L,QSA,NC] 

确保:

  • .htaccess已启用
  • mod_rewrite已启用
  • 您的网址是http://example.com/folder/img/test.jpg

这听起来像是你想在url中的图像的文件名被包含在新的php url中,而不是整个url。 所以像这样:

 RewriteRule ^folder/img/(.*[.]jpg)$ /folder/some.php?filename=$1 

考虑到你在评论中提到的内容,以前的规则不起作用,我编辑了这个消息,这就是我现在所拥有的。

 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} ^/(.*)\.jpg [NC] RewriteRule ^folder/img/([\w]*\.jpg)$ folder/some.php?img=img/$1[R=301,L] 

如果文件夹是变量,则可以更改(\ w *),并在规则的右侧添加引用。

希望这可以帮助。

再见