在ubuntu

时间:2017-12-13 06:34:48

标签: php .htaccess ubuntu apache2

我想为在我的网站上注册的每个机构创建子域名。

我执行了以下步骤来为测试网站创建子域名:

  

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,但是名字服务器已经在那里登记了。

但不知何故事情不起作用。谁能救我脱离这个?

1 个答案:

答案 0 :(得分:0)

经过数小时的研究可以得出结论,Ubuntu 17.04不是一个稳定的版本,因此dnsmasq(以及其他一些)无法正常工作。

我测试上面的过程在Ubuntu 17.10上工作正常,没有任何错误。

由于