如何为同一域的不同目录设置 apache2.conf?

如何为同一域的不同目录设置 apache2.conf?

环境:apache 2.4 + debian 9。
我已经在目录中建立了一个 wordpress /var/www/html/wp1,并进行了设置/etc/apache2/apache2.conf

<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,Allow
    Allow from all
    Require all granted
</Directory>
</VirtualHost *:80>

127.0.0.1/wp1可以显示。我在上面建立了另一个wordpress /home/material/wp2,更改设置如下/etc/apache2/apache2.conf

<VirtualHost *:80>
DocumentRoot /home/material
<Directory /home/material>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,Allow
    Allow from all
    Require all granted
</Directory>
</VirtualHost *:80>

127.0.0.1/wp2可以显示。现在我想将两个设置结合起来让127.0.0.1/wp1show wordpress on /var/www/html/wp1127.0.0.1/wp2show wordpress on /home/material/wp2,简单地将两个设置结合起来不能达到我的目标。
如何编写正确的设置?

答案1

有几件事是错误的或者你不应该做的。

在 Debian 中,主配置文件/etc/apache2/apache2.conf包括与主目录相关的其他配置文件/etc/apache2

  • 站点配置来自sites-enabled/*.conf
  • 通用配置文件来自conf-enabled/*.conf
  • 模块配置mods-enabled/*.loadmods-enabled/*.conf

可用的配置文件位于目录中sites-availableconf-available并且mods-available使能够配置,您可以使用命令a2ensitea2enconf以及中的a2enmod符号链接。要禁用配置,您可以使用,以及。xxx-availablexxx-enableda2dissitea2disconfa2dismod

第一个错误是编辑主配置文件/etc/apache2/apache2.conf。你应该这样做:

  1. 禁用(或编辑)默认配置a2dissite 000-default(目录sites-enabled现在为空)
  2. sites-available/wordpress.conf使用你的配置内容创建一个新的配置
  3. a2ensite wordpress启用符号链接wordpress.conf的新配置sites-enabled
  4. 运行apachectl configtest看看是否有语法错误
  5. service apache2 restart如果上一个命令成功,请重新启动服务器。

您的配置有一个语法错误和几个错误:

  • </VirtualHost>你没有使用结束语</VirtualHost *:80>
  • Order deny,Allow并且Allow from all弃用的语法在 Apache 2.4 中。您只需要Require all granted
  • ServerName丢失了。看看VirtualHost 示例

如果您想对两个站点都使用端口 80,这可以作为您的新配置sites-available/wordpress.conf(未经测试):

<VirtualHost *:80>
    # set your host name/server name
    ServerName myservername

    # wp1
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    # wp2
    Alias /wp2 /home/material/wp2
    <Directory /home/material/wp2>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

或者更简单:将wp2目录移动到/var/www/html第二个 wordpress 实例并从配置中删除该实例的行。

并且不要忘记恢复您的原始版本/etc/apache2/apache2.conf

相关内容