Wordpress Rest API обратный прокси - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь настроить обратный прокси с WordPress и исключить пару путей.Мои правила исключения работают для администратора, включает, ..etc, но это не работает для / wp-json /.Я подозреваю, что это из-за .htaccess.Мне нужно WordPress, чтобы вернуть остальные API данные, потому что я использую это в gatsbyjs.

Я провел весь день, пытаясь понять это.По какой-то причине мой setup / wp-json / возвращает 404, и он проксируется на сервере netlify, где живет интерфейсная часть моего сайта.Если я уберу все прокси правила wp-json работает.

.htaccess содержит материал WordPress по умолчанию.

Вот пастбина моего виртуального хоста: https://pastebin.com/vFh6hCkN

<IfModule mod_ssl.c>
   <VirtualHost *:443>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.

    Protocols h2 http/1.1
    ServerName  www.michaelharwinlaw.com
    ServerAlias michaelharwinlaw.com
    ServerAdmin webmaster@cyberserge.com
    DocumentRoot /var/www/html/

    <Directory /var/www/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    SSLProxyEngine on
    ProxyPass /wp-admin/ !
    ProxyPass /wp-login/ !
    ProxyPass /wp-json/ !
    ProxyPass /wp-content/plugins/ !
    ProxyPass /wp-includes/ !
    ProxyPassMatch .*\.xml !
    ProxyPass / https://stag.michaelharwinlaw.com/
    ProxyPassReverse / https://stag.michaelharwinlaw.com/

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/mc-error.log
    CustomLog ${APACHE_LOG_DIR}/mc-access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

    Include /var/www/html/wp-content/uploads/wpseo-redirects/.redirects

    SSLCertificateFile /etc/letsencrypt/live/www.michaelharwinlaw.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.michaelharwinlaw.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

.htaccess

<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

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Это не работает, потому что /wp-json не является реальным файлом или каталогом, без чтения .htaccess локальные запросы получат ответ 404 not found, поэтому Apache продолжит пересылать запрос на удаленный сервер.,

Чтобы исправить переписывание этого URL, нам нужно отправить запросы на локальный index.php.

Заменить ProxyPass /wp-json/ ! на

ProxyPass /index.php !
ProxyPass /wp-json !

/wp-json без завершениякосая черта / необходима для обработки запроса как domain/wp-json, так и domain/wp-json/.

Любой другой несуществующий URL будет обрабатываться удаленным сервером.

0 голосов
/ 06 декабря 2018

Из документации , см. Постраничная навигация не работает * секция 1004 *:

"Это происходит из-за сбоя в файле .htaccess, который генерирует WordPress.Чтобы исправить это, удалите содержимое файла .htaccess и заново создайте его.

  1. На панели управления выберите «Управление»> «Файлы» (дополнительная информация о редактировании файлов);
  2. Нажмите на ссылку на ваш файл .htaccess, чтобы отредактировать его содержимое;
  3. Скопируйте содержимое файла и вставьте его в текстовый файл в текстовом редакторе. Это мера предосторожности, если в вашем файле .htaccess есть руководствозаписи для перенаправлений, отказов или других полезных приемов htaccess;
  4. Удалите все содержимое из вашего файла .htaccess и нажмите кнопку Обновить файл;
  5. На панели управления перейдите в Параметры> Постоянные ссылки;
  6. Нажмите кнопку Обновить структуру постоянных ссылок, чтобы заново сгенерировать новые правила перезаписи для ваших постоянных ссылок;
  7. Проверьте результаты, используя ранее разорванную ссылку;
  8. Добавьте любой htacce вручнуюЗаписи ss обратно в ваш файл (Поместите записи htaccess вручную перед строкой # BEGIN WordPress или после строк # END WordPress.) "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...