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

Том*_*раћ 4 xampp url virtualhost

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

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

Том*_*раћ 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文件以将您想要的域映射到您的localhost.

在Ubuntu的XAMPP for Linux中,这意味着我打开 /etc/hosts并更改了行

127.0.0.1 localhost
127.0.1.1 tomica-ubuntu
Run Code Online (Sandbox Code Playgroud)

127.0.0.1 localhost
127.0.1.1 tomica-ubuntu dev
Run Code Online (Sandbox Code Playgroud)

这将重定向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>
Run Code Online (Sandbox Code Playgroud)

为简洁起见,我不会解释这段代码,因为文档也可用.

完成所有这些操作后,启动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]
Run Code Online (Sandbox Code Playgroud)

再次,解释所有这些将需要太多的空间和时间.只需复制/粘贴,不要担心:)但不要忘记将我更改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]
Run Code Online (Sandbox Code Playgroud)

该解决方案的两个缺点是:1)RewriteBase需要为每个新项目重新设置规则(即,您需要.htaccess在每个新项目中手动创建); 2)你的项目将可从两http://lvproject.dev/http://lvproject.dev/public/,这是不冷静,但我懒得在此刻得到它固定:)