在子目录中修复WordPress破坏的自定义404页

时间:2020-08-20 作者:Ukebloke

我使用Installatron在现有PHP网站的子目录中安装Wordpress,以便向该网站添加博客。我的主要网站是通过cPanel管理的。

以下是我的网站目录结构:

/-- public_html
    /-- .htaccess
    /-- index.php
    /-- about.php
    /-- etc.
    /-- product-pages
        /-- index.php
        /-- product-a.php
        /-- product-b.php
        /-- etc.
    /-- blog
        /-- wp-admin
        /-- wp-content
        /-- wp-includes
        /-- .htaccess
        /-- .user.ini
        /-- index.php
        /-- etc.
Wordpress安装将标准Wordpress节添加到根目录.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
正如许多人所发现的那样,这会禁用主网站的自定义404错误页面,而显示网站主页。Wordpress博客的404错误按预期工作,并显示Wordpress自定义404错误。

Wordpress还创建了.htaccess 在其自身/blog 安装目录。它包括以下部分:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress
我发现通过从.htaccess 在主网站根目录中,主网站自定义404和Wordpress自定义404功能似乎都正常工作。有什么理由我不应该这样做吗?

是在根目录中添加Wordpress节.htaccess 由Installatron Wordpress安装程序执行的子目录安装行为不正确?

1 个回复
SO网友:MrWhite

通过从中删除Wordpress部分,我发现了这一点。htaccess在主网站根目录中,主网站自定义404和Wordpress自定义404功能似乎都正常工作。有什么理由我不应该这样做吗?

是的,这就是我要建议的。

如果子目录中安装了WordPress/blog 并通过URL访问/blog/ 那么就不需要WordPress了.htaccess 文档根目录中的文件。你当然不应该两者兼得。

然而;WordPress;.htaccess 文档根目录中的文件似乎要重写为/index.php 在文档根目录中,哪个是错误的?!

是在根目录中添加WordPress节。Installatron Wordpress安装程序的htaccess子目录安装行为不正确?

你需要一个.htaccess 如果您在/blog 子目录,但/blog 子目录已从URL路径中隐藏。(然而,它的书写方式与当前的不同.htaccess 根目录中的文件。事实上,这与.htaccess 文件当前位于/blog 子目录。)