目前我的 /etc/apache2/sites-enabled/000-default.conf 如下所示:
DocumentRoot /var/www/htm
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
Options FollowSymLinks
Require all granted
</Directory>
我有多个域,我想访问 Nas 上的端口 80。在我的 Qnap 上,每个域都有自己的文件夹,标题为“domain.com”,其中包含“.htaccess”,许多“.html”包含 <!—#exec cgi、<!--#include virtual,每个域都包含自己的“cgi-bin”目录。
有人能告诉我“.000-default.conf”应该是什么样子才能实现我的目标吗?谢谢!
答案1
而不是把所有东西都放进去一配置文件,请考虑将每个域放在各自的.conf
文件中。这将允许您指定除使用哪个 CGI-bin 之外的更多内容。
例如:
地点 | 配置文件 |
---|---|
示例.com | /etc/apache2/sites-available/000-example-com.conf |
secondary.com | /etc/apache2/sites-available/001-secondary-com.conf |
tertiary.com | /etc/apache2/sites-available/002-tertiary-com.conf |
默认网站 | /etc/apache2/sites-available/999-default-com.conf |
您可以使用 启用(或禁用)每个站点a2ensite
,例如:
sudo a2ensite 002-tertiary-com.conf`
这样可以将所有内容分开并“干净”。999-default
如果 Web 流量流向未明确定义的域的服务器,Apache 将使用“全部捕获”功能。您可以使用文件ServerAlias
中的一行.conf
来实现这一点。
通过这种设置,您的每个.conf
文件可能看起来像这样:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/example/public
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ServerName example.com
ServerAlias example.com *.example.com
DirectoryIndex index.php index.html
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
<Directory /var/www/example.com/public>
Options FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow From All
</Directory>
<Directory "/usr/lib/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
Options FollowSymLinks
Require all granted
</Directory>
笔记:请务必根据需要替换站点的值,包括对不同cgi-bin
位置的引用。
这应该为您提供让多个域使用不同版本软件所需的特殊性(和灵活性)。