首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用目录名作为apache.conf的变量?

问如何使用目录名作为apache.conf的变量?
EN

Stack Overflow用户
提问于 2021-07-08 00:22:17
回答 1查看 54关注 0票数 0

我没有太多的编码经验,我还在学习。

这是包含在httpd.conf中的单独配置文件

我有一个很大的apache配置,并希望使用变量来清理配置文件。我的配置文件有80多个类似的条目,我相信如果我能弄清楚如何使用这些变量,就可以清除这些条目。我想将目录中的文件名作为变量使用。这里的目录是/www/pub/site/8.0/ conf /在conf文件中是站点的php文件。我想创建或使用末尾为.php的任何文件的名称,并使用该名称作为变量。因此,如果有一个名为clark的文件,apache将使用变量${siteName},它将是一个名为clark.php的文件。希望我的解释是正确的,或者至少你能理解我想要做什么。

代码语言:javascript
复制
    Redirect /direct /direct.php
<Directory /pub/www/sites/8.0/htdocs>
    Require all granted
    # Enable ".htaccess" to password protect directories.
    AllowOverride AuthConfig
</Directory>

Alias /forms /pub/www/sites/forms

<Directory /pub/www/sites/forms>
    Require all granted
</Directory>

<VirtualHost *:80>
    SetEnv siteName gentry
    DocumentRoot "/pub/www/sites/8.0/htdocs"
    ServerName gentry.testwebs.com
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

<VirtualHost *:80>
    SetEnv siteName foster
    DocumentRoot "/pub/www/sites/8.0/htdocs"
    ServerName foster.testwebs.com
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

<VirtualHost *:80>
    SetEnv siteName mcintosh
    DocumentRoot "/pub/www/sites/8.0/htdocs"
    ServerName mcintosh.testwebs.com
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

<VirtualHost *:80>
    SetEnv siteName clark
    DocumentRoot "/pub/www/sites/8.0/htdocs"
    ServerName clark.testwebs.com
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

#code basically repeats itself. etc ........
code here

当我启动apache时,下面的配置给我一个错误。

Wed Jul 07 07 08:09:41.846350 2021 pid 21457:tid 140546613625472 AH00111:未定义配置变量${siteName}

我能用这样的东西把它清理干净吗?

代码语言:javascript
复制
SetEnv sitesName "/www/pub/sites/8.0/conf/${sitesName}.php"

<Directory /pub/www/sites/8.0/htdocs>
    Require all granted
    # Enable ".htaccess" to password protect directories.
    AllowOverride AuthConfig
</Directory>

Alias /forms /pub/www/sites/forms
<Directory /pub/www/sites/forms>
    Require all granted
</Directory>

<VirtualHost *:80>
    SetEnv sitesName "/www/pub/sites/8.0/conf/${sitesName}.php"
    DocumentRoot "/pub/www/sites/8.0/htdocs"
    ServerName ${sitesName}.testwebs.com
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

[/code]

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-07-08 00:45:14

您要搜索的是一个名为mod_vhost_alias的apache2模块,您可以使用以下命令启用它

代码语言:javascript
复制
sudo a2enmod vhost_alias
sudo systemctl restart apache2

然后,您应该使用下面的内容编辑您的配置

代码语言:javascript
复制
<VirtualHost *:80>
    UseCanonicalName Off
    VirtualDocumentRoot "/var/www/%-2"
</VirtualHost>

更多信息,比如该article上的变量详细信息和源代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68289705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档