Problems with Page Not Found

时间:2021-04-30 作者:SunnyOz

我有一个新的WP网站(https://cpanel-511-syd.hostingww.com/~bcctovkp/) 当您尝试导航到此WP站点中未定义的页面或文件时,我需要有关站点功能的帮助。

有两个独立(但相关)的问题。

第一个很奇怪:

如果您尝试导航到此无效URL:https://cpanel-511-syd.hostingww.com/~bcctovkp/a/b/test.gif, 或者这个:https://cpanel-511-syd.hostingww.com/~bcctovkp/a/b/c/ 您将获得一个页面,其中显示所有[全长]帖子,一个接一个地显示在一个长页面上。

子目录a、b和c不存在,测试也不存在。gif文件。输入无效路径并不重要,只要您至少有三个子目录或两个子目录和一个文件,您就会得到这个长帖子页面。

如果您尝试导航到以下任何其他无效URL:https://cpanel-511-syd.hostingww.com/~bcctovkp/a/test.gif 或者这个:https://cpanel-511-syd.hostingww.com/~bcctovkp/a/b/, 您将获得“标准”<哦,不!此页面没有显示任何内容“参考资料”;改为在页面上显示消息。

我想弄清楚what causes the long posts page to display 有时,而不是;“哦,不”;消息(如果你能告诉我default WP page 这将创建长贴子页。)

第二个问题不是真正的问题,而是WP功能的问题:理想情况下,我想买我的404。当任何访问者在我的域中输入任何无效URL时显示的php页面(而不是获取“Oh no”消息)。

我创建了一个测试404。php页面,可在此处找到:https://cpanel-511-syd.hostingww.com/~bcctovkp/404.php. 它位于根目录中。

我认为WP允许您使用自己的404。php页面?如果是,应将其放置在何处,以及how do you activate the 404 page?

感谢您提供的任何帮助。

桑尼奥斯

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

是的,这里的关键是你应该把WordPress-specific 404 template 主题目录中的文件(例如。wp-content/themes/your-theme/404.php) 并且不在根WordPress目录中。

尽管你已经找到了解决方案,我想你还是希望得到以下问题的答案?

我想知道是什么原因导致长贴子页面有时会显示,而不是;“哦,不”;消息

因此,在默认的WordPress设置中%postname% 作为post permalink结构,前两个请求(/a/b/test.gif/a/b/c/) 不匹配任何(保存的)WordPressrewrite rules, 因此出现了404错误,但WordPress仍然会查询站点上最近的帖子,而这个查询就是我们所称的主(WordPress)查询。

当WordPress特定的404模板不可用时,默认索引模板(index.php) 使用,因此您将看到长帖子页面,因为索引模板通常显示上述主查询中的帖子。

但是另外两个请求(/a/test.gif/a/b/) 匹配了附件帖子请求(即,这些请求/URL有重写规则),因此WordPress将尝试查找附件帖子(test-gifb 如果未找到,则;“无内容”;将显示消息。看见have_posts()this part in Twenty Twenty-One\'s index template.

因此,重写规则定义查询,查询确定应使用的模板,以及index.php 是所有其他匹配模板时使用的默认模板(404.php, category.php, 等)不可用-请参阅WordPress template hierarchy 了解更多详细信息。

SO网友:SunnyOz

感谢@SallyCJ让我走上了正轨。

关于第一期。。。正在显示的页面是我的index.php 文件(默认的Wordpress页面会依次显示所有帖子。)

现在还不清楚为什么一些无效的URL会显示这个页面,而另一些则不会。我想我们永远也不会知道。

但这已经不再重要了,因为我发现(从@SallyCJ在评论中提供的链接中)我的404。php文件应放在模板文件夹中(不在WP根目录中)。

我已经移动了404。php文件现在就在那里,一切都像我希望的那样工作。

(注意:现在我问题中的上述无效URL将不再显示index.php页面或“Oh no”消息,就像我第一次发布此问题时一样。)

谢谢你的帮助。