我为运行 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 容器来捕获非规范请求。