我有一个特殊的设置,我通过静态XML文件向我的博客上的内容提供内容。每次在
中发布新的博客帖子时,插件都会创建静态XML/wp-content/folder/my.xml
大。现在我通过.htaccess将我通常通过RSS feed url发送的用户重定向到这个静态文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
# Rewrite feed/ to Static Feed:
RewriteRule ^feed/?$ /wp-content/folder/my.xml [L,T=application/rss+xml]
</IfModule>
# END WordPress
这一切看起来很棒 - 但是看看MySQL,我的服务器用户数量非常大。这很奇怪,因为它在理论上所做的就是为它们提供静态XML。看看phpmyadmin中的进程,我看到很多:
SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND ...
哪个建议每次请求/ feed /?正在制作MySQL活动......为什么?
有什么想法吗?
答案 0 :(得分:1)
我相信你在正则表达式的开头或者在它上面的RewriteBase /
声明中错过了/。
尝试更改您的重写规则:
RewriteBase /
RewriteRule ^(feed/?)?$ /wp-content/folder/my.xml [L,T=application/rss+xml]
答案 1 :(得分:1)
您确定仅在发布新博客帖子时生成此文件吗?无效的再生机制是我想到的唯一原因。
@Denis也正确提到,您可能无法重定向到正确的位置。用户可以为每个请求输入即时创建XML文件的路径。
编辑:
积分转到@Denis,但请尝试以下方法之一:
RewriteRule ^?feed=rss2$ /wp-content/folder/my.xml [L,T=application/rss+xml]
RewriteRule ^/?feed=rss2$ /wp-content/folder/my.xml [L,T=application/rss+xml]
答案 2 :(得分:0)
我遇到了类似的问题。
我发现有人正在直接(远程)轰炸我的MySQL数据库。 他们可能掌握了密码,不知道如何。
我通过在'safe_mode:On'中设置MySQL来解决它(使用CPanel / php.ini EZ Config)
然后我也在CPanel中更改了密码。
之后我的负担急剧减少。
希望有所帮助,
CGS
更新:问题又回来了,所以上面没有帮助。 经过一些测试后,我发现插件'WP Stats'导致了大量的数据库查询。在我停用它之后,我还没有看到任何错误。