WordPress 永久链接不适用于非纯文本设置(例如月份和名称)

WordPress permalinks do not work with non-Plain setting (e.g. Month and name)

TL;DR


详情

WordPress 博客位于文件系统位置 /var/www/html/(即 index.php 在那里,所有 wp-*.php 文件都在其中,例如 wp-settings.php)。

WordPress 博客的 常规设置 WordPress 地址 (URL) 站点地址 (URL) 都设置为 https://example.com/blog.

当我将永久链接设置设置为月份和名称(或除Plain),.htaccess 文件会自动修改为包含以下 mod_rewrite 块,并且 URL 路径会相应调整,例如/blog/2019/03/hello-world/,但访问 URL 会导致 内部服务器错误

# 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

日志显示以下内容:

Request exceeded the limit of 10 internal redirects due to probable configuration error.
AH00121: r->uri = /blog/index.php, referer: https://staging.example.com/blog/
AH00122: redirected from r->uri = /blog/index.php, referer: https://staging.example.com/blog/
... the above line repeated ...
AH00122: redirected from r->uri = /2019/03/10/hello-world/, referer: https://staging.example.com/blog/

成功的迹象...

永久链接设置 设置为 Plain 后,.htaccess 文件基本上是空的,但链接有效它们是不受欢迎的形式 /?p=123:

# BEGIN WordPress

# END WordPress

当我将 Custom Structure 设置为 /index.php/%year%/%monthnum%/%postname%/ 时,博客链接更新为 /blog/index.php/2019/03/hello-world/ 格式并且它们有效,但现在 URL 很丑(/index.php/)。

那么为什么它不能与 /%year%/%monthnum%/%postname%/ 和自动设置的 .htaccess 指令一起使用?

血淋淋的细节

这应该无关紧要,但需要注意的是:此 WordPress 博客 托管在 虚拟机实例 中(Google云平台.

Compute Engine的VM实例)

从最后一条规则中删除 /blogRewriteBase 保持不变)。

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

# END WordPress