【问题标题】:Apache - Domain for localhost to access folders as http://folder.localApache - 本地主机域以 http://folder.local 访问文件夹
【发布时间】:2012-09-13 23:29:09
【问题描述】:

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

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

【问题讨论】:

    标签: url xampp virtualhost


    【解决方案1】:

    我已经设法自己做到了。可以这样做,但是您需要安装 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]
    

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

    就是这样! 现在您应该可以使用http://folder.dev/http://www.folder.devhttp://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/ 获得,这不是很酷,但我现在懒得修复它:)

    【讨论】:

    • 大部分(如果不是全部)这些 .htaccess 规则可以集成到 vhost 配置文件中。
    • @nullvariable 很高兴知道,谢谢。就我而言,我正在寻找一种解决方案:a)不更改服务器的设置; b) 即使我将我的 /htdocs 文件夹移动到另一台服务器也可以工作。
    猜你喜欢
    • 2017-09-11
    • 2019-07-07
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2011-07-07
    • 2017-05-08
    • 2019-10-23
    相关资源
    最近更新 更多