如何用htaccess和php对wp-content/ploads文件夹中的WordPress图片进行水印处理?

时间:2014-06-09 作者:MrTwister

我有一个Wordpress网站,由于一些限制,我需要在服务器端保留照片原件,但在前端添加水印并直接打开照片。我使用的是前端内容创建插件(据我所知),并不是所有插件都会与自定义文件输入字段(使用wp\\u handle\\u upload)分叉。我找到了很好的解决方案:php文件+htaccess设置和RewriteRule。问题是,出于某种原因,它对我不起作用。

解决方案是:http://dolcepixel.com/how-to-watermark-all-your-uploaded-images/

打开文件时使用:

/水印。php?p=br&;q=90和;src=wp内容/上载/链接/到/文件。jpg公司

一切都很好,水印在图像上,但当此图像加载到页面或浏览器中的直接链接时,什么都不会发生。它加载没有watermaks的原始图像。

有两个主要设置:htaccess规则

RewriteRule ^wp-content/uploads/(.*\\.(jpe?g|gif|png))$ watermark.php?p=br&q=90&src=wp-content/uploads/$1
和mod\\u重写部分的完整块:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^wp-content/uploads/(.*\\.(jpe?g|gif|png))$ watermark.php?p=br&q=90&src=wp-content/uploads/$1
</IfModule>
php文件更大,正如我所见,它工作正常,问题出在其他地方,但您可以找到。php位于帖子顶部的链接。

我或Apache有什么问题。htaccess或Wordpress?如果有一种方法可以拒绝访问/上传/并有可能通过php代理打开图像,那么这也是一种解决方案,但当我尝试使用/wp content/uploads/时。htaccess和“拒绝所有人”将无法工作,直接文件打开时浏览器不会出现任何问题。

UPDATE:即使在RewriteBase规则之后,该规则仍不起作用

2 个回复
最合适的回答,由SO网友:h0tw1r3 整理而成

重写条件-f表示“如果文件不存在”。由于文件存在,因此永远无法达到规则。只要改变顺序就可以解决问题。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-content/uploads/(.*\\.(jpe?g|gif|png))$ watermark.php?p=br&q=90&src=wp-content/uploads/$1 [L]
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

SO网友:Rarst

我不太擅长.htacess, 但据我所知,基本的WP规则是为了跳过现有的文件和目录而设计的(让web服务器只为它们服务,而不是传递给WP核心)。

通过查看您的代码片段,我猜您的自定义逻辑可能永远都达不到,因为对文件/目录的检查会在它之前触发,并停止进一步的操作。

结束

相关推荐

使用.htaccess强制HTTPS-卡在重定向循环中

我的Wordpress网站位于示例中。com/wordpress和我需要里面的所有东西都只能使用SSL访问。我创建了一个。重定向http->https的htaccess规则:RewriteEngine On RewriteRule ^/?(.*) https://%{SERVER_NAME}/wordpress/directory/$1 [R,L] 实施此规则后,网站将无法访问,因为它被困在重定向循环中。我做错了什么?我的Wordpress。htaccess:<IfModul