2017-02-05 2 views
0

Я запускаю сайт электронной торговли на выделенном сервере Apache. У меня также есть блог, доступный по адресу http://www.example1.com/blog, но блог не размещен на той же машине, что и веб-сайт электронной коммерции. Для этого я установил обратный прокси-сервер на основном сервере электронной торговли, чтобы обслуживать http://www.example2.com/, когда люди пытаются получить доступ к http://www.example1.com/blog. Этот второй сервер представляет собой экземпляр AWS EC2 с WordPress с использованием AMI Bitnami с брандмауэром, что делает его доступным только для нашего сервера электронной торговли.WordPress в подкаталоге за обратным прокси

В WordPress настройки моего URL-адреса сайта и домашнего URL установлены на http://www.example1.com/blog. Конфигурация .htaccess для моего сервера 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> 

По большей части это хорошо работает. Основная страница блога и все HREF на нем начинаются с http://www.example1.com/blog, как и ожидалось. Моя проблема в том, что перенаправления обрабатываются неправильно. Например, оставив косые черты от довольно URL-адреса сообщения, например http://www.example1.com/blog/my-post, неправильно перенаправляет на http://www.example1.com/my-post/ (обратите внимание, что в подкаталоге «блог» отсутствует). Эта проблема также влияет на нашу способность использовать интерфейс wp-admin, потому что он также лишает подкаталог «блог» из своих переадресаций.

Я уверен, что я ошибаюсь в настройках Apache и/или WordPress сервера блога, но я не смог понять это после долгой работы с ним.

Как это исправить?

Edit:

Чтобы уточнить, на WordPress блог сервер установлен в корневом каталоге сайта, а не в подкаталоге. Это просто осуществляется доступ, как будто он находится в подкаталоге путем следующего Apache правило обратного прокси на главном сервере электронной коммерции:

ProxyPreserveHost On 
ProxyRequests Off 
<Location "/blog"> 
    ProxyPass http://www.example2.com 
    ProxyPassReverse http://www.example2.com 
    Order allow,deny 
    Allow from all 
</Location> 
+0

Любое решение ??? –

ответ

0

Это нормально бывает. В вашем файле .htaccess у вас есть правило:

RewriteBase /blog/ 

Но ваш WordPress не установлен на основной домен, но в папке.

Так что, когда вы выполняете http://example.com/blog на основе правила из файла .htaccess он переписывает базовый URL и удаляет/блог/

Просто измените файл .htaccess для вашего блога выглядеть следующим образом:

# 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 

Это должно сделать трюк!

+0

Спасибо за совет. К сожалению, это не помогло. После применения ваших рекомендаций .htaccess, когда я запускаю с клиента 'curl -i http: // www.example1.com/blog/my-post', я все еще получаю следующий заголовок местоположения:' Местоположение: http: // www .example1.com/мой столб/'. Я думаю, что основное недоразумение заключается в том, что на сервере блога WordPress установлен на корне сайта, а не в подкаталоге. Я отредактирую свой первоначальный вопрос выше, чтобы прояснить это. – bspwjh

Смежные вопросы