Постоянные ссылки WordPress не работают с обычными настройками (например, месяц и имя) - PullRequest
0 голосов
/ 22 мая 2019

TL; DR

  • mod_rewrite загружено
  • .htaccess доступно для записи
  • AllowOverride ALL установлено
  • LogLevel debug установлено
  • журналы показывают цикл перенаправления (см. ниже)

подробности

Блог 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/

намек на успех ...

С Постоянными настройками установлен на Обычный , файл .htaccess практически пуст, и ссылки работают, хотя они имеют нежелательную форму /?p=123:

# BEGIN WordPress

# END WordPress

Когда я устанавливаю Пользовательская структура , до /index.php/%year%/%monthnum%/%postname%/, ссылки в блогах обновляются до формата /blog/index.php/2019/03/hello-world/, и они работают, но теперь URL-адрес уродлив (/index.php/).

Так почему неРазве это не работает с /%year%/%monthnum%/%postname%/ и автоматически установленными директивами .htaccess?

подробности gory

Это не должно иметь значения, но для записи: это Блог WordPress размещен в экземпляре виртуальной машины ( экземпляр ВМ ) вычислительного механизма из Google Cloud Platform .

1 Ответ

2 голосов
/ 28 мая 2019

Удалить /blog из последнего правила (RewriteBase остается прежним).

# 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
...