2 сайта на одном домене, один должен выглядеть как вложенная папка (/blog)


Я купил VPS для моего нового проекта под управлением apache.
На нем у меня 2 сайта на одном домене.
Первый - Ruby on Rails /var/www/html
Второй - Wordpress /var/www/blog

Я хочу, чтобы Wordpress действовал как подкаталог ruby ( /blog).
Сайт Ruby on Rails работает, но если я перехожу на /blog, он просто говорит, что страница, которую я ищу, недоступна (с шаблоном RoR 404)

Конфигурация для RoR:

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/public
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/apache2/certificate/apache-certificate.crt
        SSLCertificateKeyFile /etc/apache2/certificate/apache.key
  
</VirtualHost>

Конфигурация для Wordpress:

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/blog
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/apache2/certificate/apache-certificate.crt
        SSLCertificateKeyFile /etc/apache2/certificate/apache.key
        Alias /blog /var/www/blog
</VirtualHost>

Возможно, решением является файл htacces в /var/www. Не могли бы вы мне подсказать? Спасибо!

1
задан 2 June 2021 в 02:37
1 ответ

На нем у меня есть 2 веб-сайта в одном домене.

На самом деле у вас есть 1 веб-сайт (1 домен). Просто у вас есть WordPress в подкаталоге этого 1 веб-сайта.Следовательно, у вас должен быть только 1 контейнер, а не 2 - именно здесь вы, похоже, ошибаетесь.

Второй не используется и должен быть удален.

Вам необходимо переместить директиву Alias ​​/ blog / var / www / blog в первый контейнер и разрешить доступ к этому каталогу, включив следующее в vHost container:

# WordPress
<Directory /var/www/blog>
    # Permit access to this area
    Require all granted

    # Allow per-directory overrides if want to use WP htaccess file
    AllowOverride All
</Directory>

Я полагаю, у вас уже должно быть что-то подобное для / var / www / html / public ?

Вам действительно стоит включить директиву ServerName в этот контейнер vHost, в противном случае это просто действует как "значение по умолчанию", поскольку оно определяется первым. Например:

# Declare the hostname that this vHost defines
ServerName example.com

А затем определите перед этим контейнер vHost "по умолчанию", который перехватывает неканонические запросы.

0
ответ дан 28 July 2021 в 13:23

Теги

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