我想为在我的网站上注册的每个机构创建子域名。
我执行了以下步骤来为测试网站创建子域名:
sudo a2enmod vhost_alias
sudo nano / etc / hosts
添加行 - 127.0.0.1 test.loc
sudo nano /etc/apache2/sites-available/testloc.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName test.loc
ServerAlias *.test.loc
VirtualDocumentRoot /var/www/html/test
<Directory "/var/www/html/test">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2ensite testloc.conf
sudo service apache2 reload
sudo apt-get install dnsmasq
sudo service dnsmasq status
它给出了端口53已被使用的错误,因此我将其端口更改为5353
sudo nano /etc/NetworkManager/NetworkManager.conf
添加了行 - dns = dnsmasq
sudo service network-manager restart
sudo nano /etc/dnsmasq.conf
修改后的行 - listen-address = 127.0.0.1
sudo nano /etc/dnsmasq.d/loc
添加了行 - 地址= / loc / 127.0.0.1
sudo /etc/init.d/dnsmasq restart
sudo nano /etc/dhcp/dhclient.conf
未注释的行 - #prepend domain-name-servers 127.0.0.1;
sudo dhclient
创建一个测试文件夹,在.htaccess中添加以下行以接受子域
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.test\.loc$
RewriteRule !^index\.php$ index.php [L]
index.php的代码:
preg_match('/([^.]+)\.test\.loc/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
echo $subdomain;
我在创建虚拟主机及其工作之前尝试了test.loc。在安装dnsmasq之前,事情已经很好了。我安装dnsmasq后, dig google.com 也无法运行,但“dig google.com @ 127.0.0.53”或“dig google.com @ 8.8.8.8”也正常运行。所以看起来名称服务器存在一些问题。虽然我检查了/etc/resol.conf,但是名字服务器已经在那里登记了。
但不知何故事情不起作用。谁能救我脱离这个?
答案 0 :(得分:0)
经过数小时的研究可以得出结论,Ubuntu 17.04不是一个稳定的版本,因此dnsmasq(以及其他一些)无法正常工作。
我测试上面的过程在Ubuntu 17.10上工作正常,没有任何错误。
由于