我在 Ubuntu 上运行 XAMPP,我想为我的项目创建一个虚拟主机,这样我就有一个 tld 分配给我的服务器根目录(例如 .local),并且其中的文件夹可以通过 URL 访问http://foldername.local
。
http://someotherdomain.local
此外,使用 .htaccess重定向到/foldername
服务器根目录中的路径会复杂多少?
我在 Ubuntu 上运行 XAMPP,我想为我的项目创建一个虚拟主机,这样我就有一个 tld 分配给我的服务器根目录(例如 .local),并且其中的文件夹可以通过 URL 访问http://foldername.local
。
http://someotherdomain.local
此外,使用 .htaccess重定向到/foldername
服务器根目录中的路径会复杂多少?
我已经设法自己做到了。可以这样做,但是您需要安装DNS 服务器。
注意:我决定使用 .dev 作为我的本地域,因此在以下示例中,该
dev
部分将引用我选择的域。记住这一点。
它是哪一个无关紧要,但您需要知道如何正确配置它。配置取决于您选择的 DNS 服务器。我去了dnsmasq。它重量轻,非常方便。
Ubuntu用户需要注意的一点是,从 Ubuntu 11.10 开始,已经安装了一个名为dnsmasq-base的轻量级版本,安装时会产生冲突。我不会在这里解释如何解决这个问题,因为其他地方有很多说明。
安装 DNS 服务器后,应将其配置为侦听与所需域相同的地址。
在我使用dnsmasq的情况下,这意味着打开
/etc/dnsmasq.conf
第 62 行并将其更改为:address=/dev/127.0.1.1
假设您已经安装了某种服务器软件,您需要进行一些调整。
首先,您应该编辑hosts
文件以将所需域映射到本地主机。
在我的 XAMPP for Linux on Ubuntu 的情况下,这意味着我打开
/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 服务器,或者如果它们已经在运行,则重新启动它们。
打开新创建主机的根文件夹。那是您的 . 就我而言,那是/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]
同样,解释所有这些需要太多的空间和时间。只需复制/粘贴,别担心 :) 但不要忘记将 my 更改dev
为您为域名选择的任何内容。
就是这样!现在,您应该可以使用 、 、 等地址浏览您http://folder.dev/
的http://www.folder.dev
项目http://folder.dev/file.html
了http://folder.dev/subfolder/document.txt
。
作为奖励,我将再添加一个建议。我这样做的原因是我可以更轻松地开发我的 Laravel 和 WordPress 项目。但是,使用 Laravel,您应该将 url 重定向http://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/
这并不酷,但我现在懒得修复它:)