У меня есть виртуальный хост, обслуживающий мое приложение с помощью ProxyPass, и он отлично работает. теперь я хочу обслуживать английскую версию моей службы, используя простой Wordpress по маршруту '/ en'. предполагая, что Wordpress находится в 'home / path / to / wp', как я могу этого добиться? вот моя текущая конфигурация в / etc / apache2 / sites-enabled /:
<VirtualHost xx.xx.xx.xx:443>
ServerName xx.com
ServerAlias www.xx.com
SSLEngine on
.
.
.
ProxyPass /en !
<Directory home/path/to/wp>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
#DocumentRoot "home/path/to/wp"
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/x-httpd-php7.2 .php7.2
</Directory>
Redirect /en home/path/to/wp
ProxyPass / http://0.0.0.0:3000/
ProxyPassReverse / http://0.0.0.0:3000/
#RewriteEngine on
#RewriteRule ^/en/(.*)$ /home/kerman/public_html [L,PT]
#Alias /en /home/kerman/public_html
</VirtualHost>
, как вы видите в коде, который я пробовал Redirect
, Alias
и Rewrite
], но ни один из них не работает нормально.
каков практический выход из этой ситуации?
Вы все перепробовали, но ничего должного, т.е. следуя документации.
Во-первых, пути вашей файловой системы должны быть абсолютными, начиная с корня /
. В вашем вопросе теперь много путей, но для простоты давайте просто предположим, что ваш путь WordPress - / home / kerman / public_html / en
, а все остальное передается на бэкэнд : 3000
. (# Комментарии теперь используются как комментарии.)
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
# and here the keys & co.
DocumentRoot /home/kerman/public_html
# /en under the DocumentRoot i.e. /home/kerman/public_html/en
# This must be before the ProxyPass for /
ProxyPass /en !
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
<Directory /home/kerman/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
# All is All already: no need for a list
AllowOverride All
# Allow is deprecated, and this already does it
Require all granted
</Directory>
</VirtualHost>
Нет необходимости в обходных решениях.