让本地主机加载不在 /var/www/html 目录中的网站

问题描述 投票:0回答:1

我不是一位经验丰富的

Apache
编码器/开发人员。我之前编辑过
.conf
文件,但已经有一分钟或几分钟了。

我的

Apache/2.4.52
机器上有
Ubuntu 22.04
。就其价值而言,我使用
PHP8.1.2

当我的网站目录不是

/var/www/html
时,如何通过 localhost 查看我的开发网站(开发站点)?

我在

/home/jdc44/Websites/
中构建我的网站(代码),即:这样的网站是:
/home/jdc44/Websites/LivingMuayThai
有一个实时网站,但我想对网站/代码进行更改,并能够在推送任何问题之前在本地查看它居住。我想查看该网站:
localhost/livingmuaythai
或驼峰式:
localhost/LivingMuayThai
,因为这是代码所在目录的名称。

我将在这里发布我的代码,希望有人能告诉我我缺少什么,或者如果这一切都是错误的,该怎么做。我从 2009 年开始遵循这个教程,但它不起作用。也许事情已经改变了......

如何在Linux上配置apache网络服务器

我在

livingmuaythai.conf
 中创建了一个 
/etc/apache2/sites-available/

文件
## /etc/apache2/sites-available/livingmuaythai.conf
## I removed all the commented lines for space

<VirtualHost *:80>
    
  # ServerName www.example.com
  ServerName livingmuaythai  // do I need a .com on this?

  ServerAdmin [email protected]
  DocumentRoot /home/jdc44/Websites/LivingMuayThai/

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  <Directory /home/jdc44/Websites/LivingMuayThai/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  <FilesMatch "\.*">
    SetHandler application/x-httpd-php
  </FilesMatch>
  
</VirtualHost>

## /etc/hosts

127.0.0.1   localhost livingmuaythai

我启用了该网站:

sudo a2ensite livingmuaythai

/etc/apache2/sites-enabled/
中创建了符号链接。这是设置造成的,不是我造成的。

livingmuaythai.conf -> ../sites-available/livingmuaythai.conf

然后重新启动/重新加载

Apache

当我转到

http://localhost/livingmuaythai/index.html
时,我会看到
404 Not Found
页面。

注意:我有防火墙并且端口 80 已打开。

想法?感谢您的帮助。

apache2.4 php-8.2
1个回答
0
投票

您已经谈到了启用新站点,但没有谈到禁用默认站点,所以我的猜测是您仍然进行了设置。您可以通过两种方式检查:

  • 查看
    /etc/apache2/sites-enabled/
    的内容 - 正如您所看到的,这是由
    a2ensite
    a2dissite
    命令管理的文件夹,作为打开和关闭站点的便捷方法
  • 运行
    sudo apache2ctl -S
    ,它会给出 Apache 认为已配置的所有“虚拟主机”的详细信息,以及它们的定义位置

可能,你只是想跑步

sudo a2dissite some-default-site-in-the-list


此时,值得快速绕道了解 Apache 如何解析站点:

  1. 所有配置文件都经过处理和合并,就好像它们都在一个文件中一样。所有
    Include
    行和符号链接只是为了人类方便。
  2. Apache 在特定的目标 IP 地址端口上接收来自浏览器的请求,并带有特定的 HTTP Host 标头或 TLS SNI 主机名。例如,对 URL
    http://example.com/foo/bar/baz
    的请求将具有 IP 地址
    93.184.216.34
    (这是我当前运行
    nslookup example.com
    时获得的)、端口
    80
    和主机标头
    example.com
  3. IP 地址和端口与配置中的
    <VirtualHost>
    块相匹配。
  4. 如果没有块提及特定的 IP 地址和端口,则匹配指定 IP 地址和/或端口
    <VirtualHost>
    的块。
    按顺序检查匹配块,查看它们包含的 
  5. *
  6. ServerName
    行。第一次找到与请求的主机名匹配的虚拟主机块时,将使用该虚拟主机块。
    如果没有一个块具有匹配的 
  7. ServerAlias
  8. ServerName
    ,则使用第一个块(在匹配 IP 地址和端口的列表中)。
    
    
  9. 在您的情况下,
ServerAlias

表示“任何IP地址,端口80”,

<VirtualHost *:80>
表示这对于像
ServerName livingmuaythai
这样的URL来说应该是一个不错的选择。
您的请求

http://livingmuaythai/foo/bar

将按顺序查找:


    http://localhost/livingmuaythai/index.html
  1. <VirtualHost 127.0.0.1:80>
    ServerName localhost
    定义的第一个
  2. ServerAlias localhost
  3. <VirtualHost 127.0.0.1:80>
  4. <VirtualHost *:80>
    ServerName localhost
    定义的第一个
  5. ServerAlias localhost
  6. 
        
© www.soinside.com 2019 - 2024. All rights reserved.