Apache-本地主机访问文件夹的域http://folder.local.



我在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.devhttp://folder.dev/file.htmlhttp://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/上提供,这并不酷,但我现在太懒了,无法修复:)

最新更新