【问题标题】:XAMPP Subdomain with Joomla Site带有 Joomla 站点的 XAMPP 子域
【发布时间】:2020-04-27 02:39:49
【问题描述】:

我正在使用 XAMPP v3.2.4,但我不知道这是否有什么不同,但 Joomla 3.9.14

在我的本地环境中,我通过访问 localhost/mysite 访问我的 Joomla 站点。我现在想要一个子域localhost/apps.mysite

我创建了一个名为apps 的文件夹并将其放置在我的Joomla 根目录中,即C:\xampp\htdocs\mysite\apps。此文件夹包含一个 index.html 文件。

我进行了以下更改;

在我的 Windows hosts 文件中,我添加了以下行;

127.0.0.1           localhost/apps.mysite

在我添加的httpd-vhosts.conf 文件中;

NameVirtualHost 127.0.0.1:80
<virtualhost *:80="">
    DocumentRoot "C:/xampp/htdocs/mysite/apps"
    ServerName localhost/apps.mysite
    ServerAlias www.apps.mysite.localhost.com
</virtualhost>

我没有对配置文件进行任何其他更改。我重启了 Apache 几次,没有任何变化。

当我访问 URL http://localhost/apps.mysite 时,我看到以下错误;

找不到对象!在此服务器上找不到请求的 URL。如果 您手动输入了网址,请检查您的拼写并重试。

如果您认为这是服务器错误,请联系网站管理员。

错误 404 localhost Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.3.9

为了在http://localhost/apps.mysite访问我的子域,我需要更改什么

【问题讨论】:

  • 不太可能是您的实际问题,但从 Apache 2.4 开始,NameVirtualHost 127.0.0.1:80 不是必需的,并且我记得至少会生成一个警告
  • &lt;virtualhost *:80=""&gt; 我不认为="" 应该在那里
  • 是的,VH 远非正确。你读过httpd.apache.org/docs/2.4/vhosts/name-based.html
  • 我建议 1. 为您的主站点创建一个 VH。然后 2. 创建该域的子域。基本上不要在名字中使用localhost
  • localhost/apps.mysite 不是一个合适的子域 - 您真正在寻找什么?子域可以是 apps.mysiteapps.localhost

标签: php apache joomla subdomain virtualhost


【解决方案1】:

第一个主机文件不处理文件夹,只是将 IP 地址映射到主机名。

主机文件应该是

127.0.0.1 localhost apps.mysite

127.0.0.1 localhost
127.0.0.1 apps.mysite

我更喜欢第二种方法,因为我可以评论该行..

第二您的虚拟主机 ServerName localhost/apps.mysite 不适用于子文件夹。

有效的服务器名称值可以是:domain.com、example.com、site1.example.com、user.site1.example.com 等等。

映射apps.mysite的虚拟主机示例应该是:

<VirtualHost *:80>
  ServerName apps.mysite
  ServerAlias  www.apps.mysite
  ## Vhost Document Root
  DocumentRoot "C:/xampp/htdocs/mysite/apps"
</VirtualHost>

这是一个最小示例,没有定义日志或目录特定规则。使用此配置,您将能够仅在您的计算机上使用http://apps.mysite 访问您的站点,因为主机文件将“apps.mysite”解析为您的本地主机 (127.0.0.1)。

为了在http://localhost/apps.mysite访问我的子域,我需要更改什么

http://localhost/apps.mysite 不是子域是具有文件夹 apps.mysite 的域 localhost,有效的子域是 subDomain.domain.com。

.com 是顶级域
domain.com 是域名
subDomain.domain.com 是domain.com 的子域

希望对你有帮助。

【讨论】:

    【解决方案2】:

    首先为本地主机创建一个虚拟主机,以防你想用它来做一些摆弄

    # Virtual Hosts
    #
    <VirtualHost *:80>
      ServerName localhost
      ServerAlias localhost
      DocumentRoot "C:/xampp/htdocs"
      <Directory "C:/xampp/htdocs"/>
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    
    ## then add main site
    <VirtualHost *:80>
      ServerName mysite.local
      ServerAlias www.mysite.local
      DocumentRoot "C:/xampp/htdocs/mysite/"
      <Directory "C:/xampp/htdocs/mysite/"/>
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    
    ## then add the sub domain
    <VirtualHost *:80>
      ServerName aps.mysite.local
      ServerAlias www.aps.mysite.local
      DocumentRoot "C:/xampp/htdocs/mysiteapps/"
      <Directory "C:/xampp/htdocs/mysiteapps/"/>
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require local
      </Directory>
    </VirtualHost>
    

    您需要像这样将这 2 个网站添加到您的 C:\windows\system32\drivers\etc\hosts 文件中

    127.0.0.1 mysite.local aps.mysite.local
    ::1 mysite.local aps.mysite.local
    

    要更改 HOSTS 文件,您需要重新启动或从命令窗口刷新 DNS 缓存

    >ipconfig /flushdns
    

    【讨论】:

    • 它可能与我给你的代码之前httpd-vhosts.conf 中的内容有关。你能显示所有的文件吗?我不熟悉 XAMPP 基础文件,我自己是 WAMPServer 用户
    • 好的,所以不要重复我给你的本地主机的第一个 VH。那个已经存在了
    • 你也把这些放到httpd.conf文件里了吗?
    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2015-11-10
    相关资源
    最近更新 更多