Apache2 как обслуживать другое местоположение для определенного пути в url

У меня есть виртуальный хост, обслуживающий мое приложение с помощью 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 ], но ни один из них не работает нормально.

каков практический выход из этой ситуации?

1
задан 3 March 2019 в 17:58
1 ответ

Вы все перепробовали, но ничего должного, т.е. следуя документации.

Во-первых, пути вашей файловой системы должны быть абсолютными, начиная с корня / . В вашем вопросе теперь много путей, но для простоты давайте просто предположим, что ваш путь 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>

Нет необходимости в обходных решениях.

1
ответ дан 3 December 2019 в 23:06

Теги

Похожие вопросы