我有一个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规则之后,该规则仍不起作用
最合适的回答,由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>