我管理着一个运行 WordPress MU 的服务器。服务器上托管的不同博客可以作为子域访问,例如 blog1.mydomain.tld、blog2.mydomain.tld 等。
我还需要使用同一台服务器运行自定义应用程序(reports.mydomain.tld)。
我的虚拟主机配置如下:
NameVirtualHost mydomain.tld:80
<VirtualHost mydomain.tld:80>
ServerName mydomain.tld
ServerAlias *.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /usr/local/www/mydomain.tld
</VirtualHost>
<VirtualHost reports.mydomain.tld>
ServerName reports.mydomain.tld
ServerAlias reports.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /usr/local/www/reports.mydomain.tld/app/webroot/
</VirtualHost>
当我尝试访问子域 reports.mydomain.tld 时,WordPress [剩余文本缺失]
答案1
我建议不要在VirtualHost
andNameVirtualHost
指令中使用主机名。而是使用 IP 地址或通配符。
此外,当 NameVirtualHost 和请求的主机名可以匹配任一虚拟主机时,则第一个遇到的虚拟主机优先。 在您的例子中,这意味着通配符捕获所有内容。
您还可以删除多余的ServerAlias
。
请尝试:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName reports.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /usr/local/www/reports.mydomain.tld/app/webroot
</VirtualHost>
<VirtualHost *:80>
ServerName mydomain.tld
ServerAlias *.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /usr/local/www/mydomain.tld
</VirtualHost>
答案2
我建议如下:
<VirtualHost mydomain.com:80>
ServerName mydomain.com
ServerAdmin [email protected]
AddType application/x-httpd-php .php
DocumentRoot /path/to/my/app/
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</FilesMatch>
RewriteEngine On
RewriteRule (.*)-cb\d+\.(.*)$ $1.$2 [L]
<Directory "/path/to/my/app/">
Options Indexes FollowSymLinks ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案3
放
<VirtualHost reports.mydomain.tld>
ServerName reports.mydomain.tld
ServerAlias reports.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /usr/local/www/reports.mydomain.tld/app/webroot/
</VirtualHost>
多于
<VirtualHost mydomain.tld:80>
ServerName mydomain.tld
ServerAlias *.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /usr/local/www/mydomain.tld
</VirtualHost>
应该可以解决问题:)