如何根据扩展在 apache 中提供不同的 DocumentRoot?

如何根据扩展在 apache 中提供不同的 DocumentRoot?

抱歉,我确信这是非常基础的,但我找不到一个可以让我提供不同服务的例子DocumentRoot根据 url 提供不同目录的示例扩大(尽管我看到很多DocumentRoot基于 ServerName、IP 地址等提供不同目录的示例)

这是我现在的配置:

<IfModule mod_ssl.c>
  <VirtualHost *:443>

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ServerName example.com
    Include /etc/letsencrypt/options-ssl-apache.conf
    ServerAlias www.example.com
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

  </VirtualHost>
</IfModule>

因此转到https://www.example.com/服务/var/www/html。很好。但现在我想要 URL 的特定扩展名(例如)https://www.example.com/wordpress来提供完全不同的DocumentRoot目录(例如/home/me/wordpress)。配置 apache 以实现此目的的最佳方法是什么(而不必重复所有 SSL 配置)?

答案1

我找不到可以让我DocumentRoot根据 url 扩展提供不同目录的示例。

我不相信这是可能的(假设你的意思是使用实际DocumentRoot指令)。

然而,正如评论所指出的那样,Alias(通过mod_alias)很可能可以做你想做的事,例如:

<IfModule mod_ssl.c>
    <VirtualHost *:443>

        ServerName example.com
        ServerAlias www.example.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Include /etc/letsencrypt/options-ssl-apache.conf

        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

        Alias "/wordpress" "/home/me/wordpress"

        # This can potentially help with permission issues.
        <Directory "/home/me/wordpress">
            Require all granted
        </Directory>

    </VirtualHost>
</IfModule>

另一个可能的选择是使用符号链接到例如/home/me/wordpress(例如直接在/var/www/htmlas中wordpress)。

相关内容