WordPress规则也有例外

WordPress的Apache
阅读时间: 2 分钟

WordPress的ApacheWordPress在博客平台上迈出了重要的一步,将其移至功能完善的内容管理系统,该系统具有修订跟踪,对自定义菜单的更多支持以及对我而言最引人入胜的功能-域映射的多站点支持。

如果您不是内容管理系统的迷,那就可以了。 您可以跳过本文。 但是对于我的技术极客,代码头和apbble爱好者来说,我想分享一些有趣的东西。

多站点是一项功能,允许您通过单个WordPress安装运行任意数量的WordPress网站。 如果您管理多个站点,那很好,因为您可以安装一组批准的主题和小部件,并为您的客户站点激活它们。 映射您的域有一些技术障碍,但是过程并不困难。

我确定的问题领域之一是主题定制。 由于可以将主题提供给多个网站,因此您对主题进行的任何自定义设置也会影响在多站点安装中使用该主题的任何其他站点。 解决此问题的方法是在开始自定义之前复制主题,并明确为其设计样式的客户站点命名该主题。

另一个有趣的问题是Apache服务器上的.htaccess文件中发生了什么。 WordPress需要在逐个博客的基础上重写路径,并使用重写规则和php文件来完成此操作。

WordPress使用以下重写规则:

RewriteRule ^([_ 0-9a-zA-Z-] + /)?files /(.+)wp-includes / ms-files.php?file = $ 2 [L]

本质上,mysite.com/files/directory子目录中的所有内容都将被重写为mysite.com/files/wp-includes/myblogfolderpath…,这是很有趣的地方。 如果您实际上需要在服务器上拥有mysite.com/files/myfolder/myimage.jpg这个文件,该怎么办? 您收到404错误,这就是发生的情况。 Apache重写规则开始执行并更改路径。

当然,您可能永远不会遇到这个问题,但是我做到了。 我有一个网站,该网站需要使用其他网站上的javascript小部件,并且需要在mysite.com/files/Images/myfile中找到图形。 由于无法在主机站点上更改文件,因此我需要找出一种在服务器上执行此操作的方法。 一种简单的解决方案是创建一个重写条件,使特定文件例外。

这里是解决方案:

RewriteCond%{REQUEST_URI}!/?files / Image / file1.jpg $
RewriteCond%{REQUEST_URI}!/?files / Image / file2.jpg $
RewriteRule ^([_ 0-9a-zA-Z-] + /)?files /(.+)wp-includes / ms-files.php?file = $ 2 [L]

重写条件必须放在重写规则之前,否则此技巧将不起作用。 如果您遇到类似的问题,为自己的目的修改此条件应该很容易。 该解决方案对我来说效果很好,允许我替换自定义图形,而不是不适合我的设计的替代文本。 希望它也对您有用。

你觉得呢?

本网站使用Akismet来减少垃圾邮件。 了解您的数据如何处理.