【问题标题】:Apache - rewrite images to php file with .htaccessApache - 使用 .htaccess 将图像重写为 php 文件
【发布时间】:2012-10-17 00:45:21
【问题描述】:

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

所以,

example.com/folder/img/test.jpg

将被重写为类似的东西

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

(这是最好的方法吗?)

我对正则表达式不太熟悉,所以我会非常感谢:)

注意:我之前尝试过一些解决方案,但都没有奏效。另外,我在 CentOS 环境下运行 Apache 2.0

【问题讨论】:

  • 在请求图像的文件夹中添加php文件似乎有点奇怪,您很可能想要根文件夹中的php文件。否则,这意味着您在每个图像文件夹上都有一些.php,或者另一个重写规则来处理它。
  • 这并不奇怪,它是一个特性。

标签: apache .htaccess mod-rewrite


【解决方案1】:

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_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

【讨论】:

  • 尽管到目前为止您的答案与此处的任何其他答案一样有效,但您给了我需要的提示。 Mod_Rewrite 根本不工作,因为我在一个没有任何 <Directory> 指令的虚拟主机上工作,因此默认情况下不允许 url 覆盖。
【解决方案2】:

听起来您希望 url 中图像的文件名包含在新的 php url 中,而不是整个 url。所以像:

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

【讨论】:

  • 你能说得更具体一点吗?实际发生了什么。
  • 什么也没发生。我访问example.com/folder/img/test.jpg,它只是按原样显示图像,当它应该重定向到php并将GET请求转储到屏幕上时。
【解决方案3】:

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

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

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

希望这会有所帮助。

再见

【讨论】:

    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多