我没有太多的编码经验,我还在学习。
这是包含在httpd.conf中的单独配置文件
我有一个很大的apache配置,并希望使用变量来清理配置文件。我的配置文件有80多个类似的条目,我相信如果我能弄清楚如何使用这些变量,就可以清除这些条目。我想将目录中的文件名作为变量使用。这里的目录是/www/pub/site/8.0/ conf /在conf文件中是站点的php文件。我想创建或使用末尾为.php的任何文件的名称,并使用该名称作为变量。因此,如果有一个名为clark的文件,apache将使用变量${siteName},它将是一个名为clark.php的文件。希望我的解释是正确的,或者至少你能理解我想要做什么。
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}
我能用这样的东西把它清理干净吗?
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]提前感谢您的帮助。
发布于 2021-07-08 00:45:14
您要搜索的是一个名为mod_vhost_alias的apache2模块,您可以使用以下命令启用它
sudo a2enmod vhost_alias
sudo systemctl restart apache2然后,您应该使用下面的内容编辑您的配置
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "/var/www/%-2"
</VirtualHost>更多信息,比如该article上的变量详细信息和源代码
https://stackoverflow.com/questions/68289705
复制相似问题