2 个网站托管在同一个域名上,其中 1 个需要看起来像子文件夹 (/blog)

2 个网站托管在同一个域名上,其中 1 个需要看起来像子文件夹 (/blog)

我为运行 Apache 的新项目购买了一个 VPS。在 VPS
上,我在同一域名上拥有 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>

也许解决方案是 /var/www 中的 htacces 文件。您能指点我一下吗?谢谢!

答案1

我在同一个域名上有 2 个网站。

嗯,您实际上有 1 个网站(1 个域名)。只是您在该 1 个网站的子目录中安装了 WordPress。因此,您应该只有 1 个<VirtualHost>容器,而不是 2 个 - 这似乎是您在这里出错的地方。

第二个<VirtualHost>没有被使用并且应该被删除。

您需要将Alias /blog /var/www/blog指令移动到第一个<VirtualHost>容器中,并通过在 vHost 容器内包含以下内容来允许访问该目录:

# 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

您确实应该在此 vHost 容器内包含一个ServerName指令,否则,这只是通过首先定义来充当“默认”。例如:

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

然后在此之前定义一个“默认”vHost 容器来捕获非规范请求。

相关内容