我在Ubuntu上运行XAMPP,我想为我的项目创建一个虚拟主机,这样我就有了一个分配给我的服务器根目录(例如.local)的tld,其中的文件夹可以通过URLhttp://foldername.local
访问。
此外,使用.htaccess将http://someotherdomain.local
重定向到服务器根目录中的/foldername
路径会复杂多少?
我已经自己做到了。这是可能的,但您需要安装DNS服务器。
注意:我决定使用.dev作为我的本地域,因此在下面例如,
dev
部分将引用我选择的域。把它放进去介意
安装和配置DNS服务器
它是哪一个并不重要,但您需要知道如何正确配置它。配置取决于您选择的DNS服务器。我选择了dnsmasq。它重量轻,非常方便。
对于Ubuntu用户来说,一个重要的注意事项是,自Ubuntu 11.10以来已经安装了一个名为dnsmasq-base的轻量级版本,它将在安装过程中导致冲突。我不会在这里解释如何避开这一点,因为其他地方有很多可用的说明。
安装DNS服务器后,应将其配置为侦听与所需域相等的地址。
在我的dnsmasq案例中,这意味着打开
/etc/dnsmasq.conf
和将第62行更改为:address=/dev/127.0.1.1
配置Web服务器
假设您已经安装了某种服务器软件,则需要进行一些调整。
首先,您应该编辑hosts
文件,将所需的域映射到本地主机。
在我的Ubuntu上的XAMPP Linux案例中,这意味着我打开了
/etc/hosts
和变线127.0.0.1 localhost 127.0.1.1 tomica-ubuntu
至
127.0.0.1 localhost 127.0.1.1 tomica-ubuntu dev
这将把
http://dev
重定向到我的本地服务器。
接下来,创建一个带有几个特定选项的新虚拟主机,如下所示:
对我来说,这意味着打开
/opt/lampp/etc/extra/httpd-vhosts.conf
,并将其添加到文件:<VirtualHost *:80> DocumentRoot "/opt/lampp/htdocs/dev" ServerName dev ServerAlias *.dev <Directory /opt/lampp/htdocs/dev> AllowOverride All </Directory> </VirtualHost>
为了简洁起见,我不解释这段代码,因为文档也可用。
完成所有这些操作后,启动您的DNS和Web服务器,或者如果它们已经在运行,则重新启动。
配置.htaccess
打开新建主机的根文件夹。那是你的文件夹。就我而言,这是/opt/lampp/htdocs/dev
。在那里,创建一个.htaccess
文件并将其放入:
# Specify order of index files; if none exist, show files list
DirectoryIndex index.php index.html
# Interpret .html files as .php scripts
AddHandler php5-script .php .html
# THE MAGIC - Redirect subdomains of .dev to their respective folders
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.dev$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?(.*).dev(.*)?$ [NC]
RewriteRule !^%2.dev%3?/$ http://dev/%2%{REQUEST_URI}/ [P]
同样,解释这一切需要太多的空间和时间。只需复制/粘贴即可:)但不要忘记将我的dev
更改为您为域名选择的任何内容。
就这样现在您应该可以使用http://folder.dev/
、http://www.folder.dev
、http://folder.dev/file.html
、http://folder.dev/subfolder/document.txt
等地址浏览您的项目。
作为奖励,我只会再加一条建议。我这么做的原因是为了更容易地开发我的Laravel和WordPress项目。但是,使用Laravel,您应该将urlhttp://lvproject.dev/
重定向到/lvproject/public
的位置。这里有一个.htaccess
文件,可以实现这一点。打开您的/lvproject
文件夹,创建一个.htaccess
文件,并在其中放置以下代码:
RewriteBase /lvproject/
RewriteCond %{REQUEST_URI} lvproject/index.php [NC]
RewriteRule index.php(.*)$ public/ [L]
该解决方案的两个缺点是:1)每个新项目都需要重新设置RewriteBase
规则(即需要在每个新项目中手动创建.htaccess
);2) 你的项目将在http://lvproject.dev/
和http://lvproject.dev/public/
上提供,这并不酷,但我现在太懒了,无法修复:)