4

我在 Ubuntu 上运行 XAMPP,我想为我的项目创建一个虚拟主机,这样我就有一个 tld 分配给我的服务器根目录(例如 .local),并且其中的文件夹可以通过 URL 访问http://foldername.local

http://someotherdomain.local此外,使用 .htaccess重定向到/foldername服务器根目录中的路径会复杂多少?

4

1 回答 1

8

我已经设法自己做到了。可以这样做,但是您需要安装DNS 服务器

注意:我决定使用 .dev 作为我的本地域,因此在以下示例中,该dev部分将引用我选择的域。记住这一点。

安装和配置 DNS 服务器

它是哪一个无关紧要,但您需要知道如何正确配置它。配置取决于您选择的 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 服务器,或者如果它们已经在运行,则重新启动它们。

配置 .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]

同样,解释所有这些需要太多的空间和时间。只需复制/粘贴,别担心 :) 但不要忘记将 my 更改dev为您为域名选择的任何内容。

就是这样!现在,您应该可以使用 、 、 等地址浏览您http://folder.dev/http://www.folder.dev项目http://folder.dev/file.htmlhttp://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/这并不酷,但我现在懒得修复它:)

于 2012-09-24T10:55:09.643 回答