这很复杂。你想要的东西不容易那样做。但你可能的目标可以通过另一种方式实现。
一些背景知识:重写在两个地方完成,通常的配置以两种不同的方式使用它们。首先,Apache进行了一些重写。这里通常的目的是将Apache可以直接处理的请求(因为它只需要使用现有文件(例如图像)进行响应)与WordPress应该响应的请求分开。第二组重写发生在WordPress中,旨在帮助确定要使用的模板。
Apache重写的部分问题是缺少一条规则,导致Apache将内容移交给WordPress。所以\'the_image\'
工作正常,因为重写会产生文件路径,Apache知道如何响应。但是\'the_page\'
不会,因为重写会导致与文件不对应的内容,Apache不知道该怎么做。所以你需要三条结束线
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
(请注意,这三行只是一条重写规则,因为前两行只是影响最后一行应用程序的条件。)
现在,添加这些行仍然会给出一条“找不到”的消息,尽管是来自WordPress而不是Apache。我不太清楚为什么。在Apache重新编写请求之前,它总是查看请求,这可能存在bug。使用PHP7而不是PHP5可能会产生一个深奥的问题。很难确定,因为它涉及376行函数。在任何情况下,WordPress最终都会查找一个名为“the\\u page”的页面,而不是“sample page”。
因此,解决方法是让每个重写工具执行通常期望的操作。特别是,让WordPress处理“the\\u page”的重写。有几个过滤器可以方便地调整WordPress的重写规则。如果你需要的话,我可以添加细节。