Apache - localhost用于以http://folder.local访问文件夹的域

时间:2012-09-21 14:13:46

标签: url xampp virtualhost

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

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

1 个答案:

答案 0 :(得分:7)

我已经设法自己做了。可以这样做,但是您需要安装 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 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服务器,或重启,如果它们已在运行。

配置.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,{{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)您的项目可以从.htaccesshttp://lvproject.dev/获得,这不是很酷,但我现在太懒了以解决它:)