我在Ubuntu上运行XAMPP并且我想为我的项目创建一个虚拟主机,这样我就可以将tld分配给我的服务器根目录(例如.local),并且可以通过URL访问其中的文件夹http://foldername.local
。
另外,使用.htaccess将http://someotherdomain.local
重定向到服务器根目录中的/foldername
路径会有多复杂?
答案 0 :(得分:7)
我已经设法自己做了。可以这样做,但是您需要安装 DNS服务器。
注意:我决定使用.dev作为我的本地域名,所以在下面 例如,
dev
部分将引用我选择的域名。保持这种状态 心。
无论哪一个都无关紧要,但您需要知道如何正确配置它。配置取决于您选择的DNS服务器。我去了 dnsmasq 。它重量轻,非常方便。
Ubuntu 用户的一个重要注意事项是,因为Ubuntu 11.10有 已经安装了一个名为 dnsmasq-base 的轻型版本 在安装过程中导致冲突我不会在这里解释如何 解决这个问题,因为其他地方有很多指示。
安装DNS服务器后,应将其配置为侦听与所需域名相同的地址。
在 dnsmasq 的情况下,这意味着打开
/etc/dnsmasq.conf
和 将第62行更改为:address=/dev/127.0.1.1
假设您已安装某种服务器软件,则需要进行一些调整。
首先,您应该编辑hosts
文件,将所需的域映射到本地主机。
在Ubuntu的XAMPP for 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服务器,或重启,如果它们已在运行。
打开新创建的主机的根文件夹。这是你的文件夹。就我而言,那是/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
,{{1}等地址浏览您的项目},http://folder.dev/file.html
等。
作为奖励,我将再添加一条建议。我之所以做到这一点,是因为我可以更轻松地开发我的Laravel和WordPress项目。但是,对于Laravel,您应该将网址http://folder.dev/subfolder/document.txt
重定向到http://lvproject.dev/
的位置。这里是/lvproject/public
文件,可以实现这一点。打开.htaccess
文件夹,创建一个/lvproject
文件并将此代码放入其中:
.htaccess
此解决方案的两个缺点是:1)需要为每个新项目重新设置RewriteBase /lvproject/
RewriteCond %{REQUEST_URI} lvproject/index\.php [NC]
RewriteRule index\.php(.*)$ public/ [L]
规则(即您需要在每个新项目中手动创建RewriteBase
); 2)您的项目可以从.htaccess
和http://lvproject.dev/
获得,这不是很酷,但我现在太懒了以解决它:)