我有一台正在尝试设置的 Apache 服务器,是的,我使用的是最新版本。我想将主域名用作网站,然后将子域名用作会员论坛。我已设置子域名,并且还在conf
Apache 等目录中设置了文件。我不知道我做错了什么,它只是将我重定向到我网站的主页,而不是转到.html
我为测试设置的页面。
这是我的文件的代码.conf
:
<VirtualHost *:443>
# ServerName forum.example.com
ServerAdmin [email protected]
ServerName forum.example.com
ServerAlias forum.example.com
DocumentRoot /var/www/forum.example.com
<Directory /var/www/forum.example.com>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
# ServerName forum.example.com
ServerAdmin [email protected]
ServerName forum.example.com
ServerAlias forum.example.com
DocumentRoot /var/www/forum.example.com
<Directory /var/www/forum.example.com>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
.htaccess
据我所知我没有文件
答案1
好的..终于解决了问题..让它工作了
首先在你的主机 dns 上...你需要添加你的服务器名称的记录我使用 namecheap.com ..我添加了一个A + Dynamic DNS Record
主机 john 和我的 ip 地址...与我的 www 的 A 记录相同...我假设它只是A Record
其他地方的标准
一旦有了这个,你可能需要一段时间才能真正 ping 通它,一旦你可以 ping 通它,如果你的所有其他设置都正确,那么你就可以开始了
现在好了,对于我使用的配置文件。我创建了两个sites-available
。
第一个叫做001-john.conf
我发现文件结尾很重要.conf
否则你将无法使用似乎可以解决问题的命令。
在该配置中我添加了以下内容:
<VirtualHost *:80>
ServerAdmin [email protected] (of course you would use your domain name instead of mysite.com)
ServerName john.mysite.com
ServerAlias john.mysite.com
DocumentRoot /web/john (of course you would make the root the path to the folder where the files are stored)
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride ALL
</Directory>
<Directory /web/john/>
Options ExecCGI FollowSymLinks Includes Indexes (or whatever directives you want)
AllowOverride ALL
order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /web/plus/cgi-bin/ (if you wanted to create a cgi bin use your correct path for this)
<Directory "/web/plus/cgi-bin">
AllowOverride ALL
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/errorjohn.log
CustomLog /var/log/apache2/accessjohn.log combined
</VirtualHost>
第二个配置文件用于 ssl,我将其命名为它001-john-ssl.conf
看起来像这样:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName john.mysite.com
ServerAlias john.mysite.com
DocumentRoot /web/john
<Directory />
Options FollowSymLinks
AllowOverride ALL
</Directory>
<Directory /web/john/>
Options Indexes FollowSymLinks Includes MultiViews ExecCGI
AllowOverride ALL
Require all granted
</Directory>
ScriptAlias /cgi-bin/ /web/plus/cgi-bin/
<Directory "/web/plus/cgi-bin">
AllowOverride ALL
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
LogLevel warn
ErrorLog /var/log/apache2/errorjohn.log
CustomLog /var/log/apache2/accessjohn.log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/apache2/ssl/your.crt file
SSLCertificateKeyFile /etc/apache2/ssl/your.key file
SSLCACertificateFile /etc/apache2/ssl/your.ca-bundle
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>
</IfModule>
一旦一切都保存了下来,我就跑了
sudo a2ensite 001-john.conf
和
sudo a2ensite 001-john-ssl.conf
然后我就跑了
sudo service apache2 reload
然后检查它是否同时具有两者..以前没有..我只是创建了从 site-available 到 site-enabled 的链接..这对我来说似乎不起作用,但在使用标有 .conf 扩展名的文件运行 a2ensite 之后..我运行apachectl -t -D DUMP_VHOSTS
并得到了这个结果:
VirtualHost configuration:
*:443 is a NameVirtualHost
default server mysite.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2)
port 443 namevhost mysite.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2)
port 443 namevhost john.mysite.com (/etc/apache2/sites-enabled/001-john-ssl.conf:2)
alias john.mysite.com
*:80 is a NameVirtualHost
default server mysite.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost mysite.com (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost john.mysite.com (/etc/apache2/sites-enabled/001-john.conf:1)
alias john.mysite.com
**仅供参考...我的原始站点位于目录中/web/public
,而子域站点位于/web/john
...由于您的网站位于,/var/www/html
我可能会使用类似/var/www/forum
子域文件夹的东西来存储您的论坛文件,我会用forum.yoursite.com
它作为ServerName
和,ServerAlias
但希望通过这个例子,你会看到所有内容的格式和设置。
一旦 DNS 记录从 namecheap 更新,我就可以访问 john.mysite.com,它会显示其中的简单“正在建设中”文件,如果我直接访问 www.mysite.com,它会给我显示一段时间前设置的正常页面
所以现在它正在与子域名合作
希望这能帮助您完成并正确设置..很可能是因为配置文件可能没有扩展.conf
,而您没有a2ensite
启用它们..这似乎是我遇到的问题
答案2
对于遇到同样问题的人,我有个提示:就我而言,向子域添加 SSL 证书解决了这个问题。我的主域在 SSL 上运行,显然所有 HTTP 流量都被重定向到主域上的 HTTPS。