我有以下重写规则
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
每个对wp-content /上传的请求都由dl-file.php处理,以检查用户是否已登录。
我还需要具备该功能,但可以免费访问图像(png | jpg | gif | jpeg) 我有点失落,我不知道如何修改重写规则来检查任何文件,它没有图像。
答案 0 :(得分:1)
在重写为dl-file.php的规则之前,您可以为图片插入更具体的规则:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(wp-content/uploads/.*\.png)$ $1 [L]
RewriteRule ^(wp-content/uploads/.*\.jpg)$ $1 [L]
RewriteRule ^(wp-content/uploads/.*\.gif)$ $1 [L]
RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]
三个规则中的每一个都具有相同的结构,我将解释第一个: 匹配以 .png 结尾的上传内容 使用括号将整个路径保存到变量$ 1。
规则的右侧给出了这个变量,所以如果你看 在一个特定的网址上归结为:
Rewrite wp-content/uploads/some.png wp-content/uploads/some.png [L]
最后的L告诉重写引擎这是最后应用的规则。 所以如果匹配,重写过程就在这里结束,你的png-image就会被提供。