具有与现有目录冲突的自定义POST插件

时间:2015-04-25 作者:Chris Jenkins

我目前正在将一个网站从现有的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是否存在?

2 个回复
SO网友:Tom J Nowell

不使用WordPress。有了这个目录,您的web服务器在处理请求时甚至不需要接触WordPress。

我会:

将尽可能多的内容从该文件夹中移开,重命名重写规则,使其不仅/episodes/ 为了避免冲突,您可以尝试移动文件夹并添加重定向,但在该级别上,您处于Apache/Nginx级别,而不是WordPress级别

SO网友:Mark Kaplun

你需要做的事情

更改。htaccess让wordpress优先于目录处理wordpress url解析您有两个很好的选项来处理解析

钩住init操作并检查url是否属于目录中存在的文件在主题的404中进行文件检查。php文件,然后再输出任何html(跳过步骤:检测文件类型并通过php函数以正确的编码发送)

我认为404方法更可靠,因为它对那些历史文件的优先级最低。您可以找到被调用的钩子来加载主题的404文件,如果您希望将功能保留在面向表示的代码之外,可以使用它。

您可能面临的最大问题是每个小文件的性能,您将不得不加载wordpress、连接到DB等。如果这些文件没有流量,这可能不是一个大问题,但这是一个风险。

因此,您应该考虑的是改进。htaccess在url以结尾时首先保留文件的当前算法。png。jpg。gif。pdf,并且仅当未转到时,才将控制传递给wordpress。

结束

相关推荐

Htaccess https 301 problem

两周以来,我在我的域上安装了SSL证书。我已经将我的基本url更改为https,因此我的规范url现在是https。但现在我需要强制使用https。我对下面的htaccess进行了更改,但如果我现在在admin中更新我的permalinks,Wordpress会将其覆盖为旧的htaccess,我的https重定向也会消失。有人有过这方面的经验吗?# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On Rew