目前我使用以下服务托pipe我自己的(Ubuntu)服务器:samba,ftp和web服务器。 我已经买了一个域,并将DNS A-record连接到我的ISP的IP。 这工作正常。 现在我想使用DNS通配符logging来创build子域。 我想避免在DNS更改完成之前等待24小时。
因此,我只能将所有传入的通配符redirect到相同的目录:
test1.domain.comredirect到/ var / www
test2.domain.comredirect到/ var / www
虽然我想得到:
test1.domain.comredirect到/ var / www / test1
test2.domain.comredirect到/ var / www / test2
我的猜测是要更改文件/ etc / apache2 / sites-available / domain。
任何帮助或提示将受到欢迎!
谢谢,
标记
编辑:
这是我的/ etc / apache2 / sites-available / domain文件的样子:
<VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot /var/www/webroot <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webroot> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
您应该能够获得与VirtualDocumentRoot所需的行为。
在你的<VirtualHost> ,添加一个ServerAlias来捕捉你感兴趣的所有域:
ServerAlias *.example.com
…然后将它们映射到所需的目录。 删除您的DocumentRoot ,并在它的位置,添加:
VirtualDocumentRoot /var/www/%1
你需要一个允许访问的<Directory /var/www/>块,并且记住这个虚拟主机应该只处理你的dynamicconfiguration虚拟主机的服务 – 如果你想让example.com和www.example.com分开处理,那么你会希望他们拥有自己的<VirtualHost> 。
编辑:
您将需要使用不同的虚拟主机来处理“基本”域。 在评论中关注当前的configuration:
NameVirtualHost *:80 <VirtualHost *:80> ServerName catchall.example.com ServerAlias *.example.com # NOTE: this config will map test1.example.com to /var/www/test1 VirtualDocumentRoot /var/www/%1 # If you want that to map instead to /var/www/test1.example.com, then use %0: # VirtualDocumentRoot /var/www/%0 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Order Allow,Deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> # This next vhost should be in a different file in sites-available to # fit with debian-style vhosts - but make sure it's alphabetically # after the file that contains the first vhost - we want it to load first # so that it's default. It can also just go in the same file. <VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/www.example.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Order Allow,Deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
感谢您帮助find答案。 在这里,我得到了我的问题的解决scheme,我认为这将有助于像我这样的上辈子find上述问题的解决scheme。
第一步:configuration您的网站如下所示
vi /etc/apache2/sites-available/yoursite
<VirtualHost *:80> ServerAlias localhost *.yoursite #wildcard catch all VirtualDocumentRoot /path/to/your/workspace/%1/public UseCanonicalName Off <Directory "path/to/your/workspace"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
2)sudo a2ensite / etc / apache2 / sites-available / yoursite
3)sudo服务apache2重新加载
4)安装Dnsmasq:sudo apt-get install dnsmasq
5)打开/etc/NetworkManager/NetworkManager.conf并注释掉读取dns = dnsmasq的行。 之后重启NetworkManager:sudo restart network-manager。
6)vi /etc/dnsmasq.conf和一行listen-address = 127.0.0.1。
7)在/etc/dnsmasq.d中创build一个新文件,然后打开文件并编辑它
address=/yourdomain/127.0.0.1
8)重新启动Dnsmasq:sudo /etc/init.d/dnsmasq restart。
这也可以在nginx中完成。 并请注意这个解决scheme已经为我工作。 我想这也适用于所有其他人。