我目前正在将一个网站从现有的CMS转换为WordPress。
我有一个自定义的“剧集”帖子类型,URL为myurl。com/剧集/
myurl上还有一个现有目录。com/剧集/由于历史原因需要保留-它包含大量图像和静态HTML文件,仍需要解析。
目前,由于/集/目录存在,WordPress不会靠近它,因此我的自定义帖子类型下的页面不会加载。
这是因为WordPress的默认设置。htaccess有两条规则,规定WordPress不应处理任何现有文件或现有目录:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
但这些规则完全不能由WordPress来处理。我希望WordPress在默认情况下处理/集/集,并且仅当有问题的文件存在时才这样做。
但是,只有第一行(即,除非有问题的文件存在,否则将所有内容传递给WordPress)似乎并没有什么效果。
有没有办法重新编写这些重写规则,以便WordPress在目录存在时仍能处理请求,但在file是否存在?
SO网友:Mark Kaplun
你需要做的事情
更改。htaccess让wordpress优先于目录处理wordpress url解析您有两个很好的选项来处理解析
钩住init操作并检查url是否属于目录中存在的文件在主题的404中进行文件检查。php文件,然后再输出任何html(跳过步骤:检测文件类型并通过php函数以正确的编码发送)
我认为404方法更可靠,因为它对那些历史文件的优先级最低。您可以找到被调用的钩子来加载主题的404文件,如果您希望将功能保留在面向表示的代码之外,可以使用它。
您可能面临的最大问题是每个小文件的性能,您将不得不加载wordpress、连接到DB等。如果这些文件没有流量,这可能不是一个大问题,但这是一个风险。
因此,您应该考虑的是改进。htaccess在url以结尾时首先保留文件的当前算法。png。jpg。gif。pdf,并且仅当未转到时,才将控制传递给wordpress。