gpt4 book ai didi

php - 项目链接在 Wamp 服务器上不起作用

转载 作者:行者123 更新时间:2023-12-01 17:20:34 30 4
gpt4 key购买 nike

我正在另一台计算机上安装 Wamp Server 以运行中型数据库和 UI。我已成功阻止 IIS 并将服务器路由到 Localhost:8080。但是每当我尝试从 localhost 主页访问我的项目时,在 www 文件中;我被重定向到找不到页面错误。

当我将鼠标悬停在链接上方时,目录总是出现“http://ProjectFolderNameHere/”。当它应该是“http://LocalHost:8080/ProjectFolderNameHere/”时。我该怎么做才能使链接正常工作?

我的机器在 64 位 Windows 7 家庭版上运行,并且我已经禁用了 Microsoft 的 IIS。

最佳答案

如何在 WampServer 中创建虚拟主机

WAMPServer 3 使这个过程变得更加容易!
您可以通过作为 WAMPServer 一部分提供的实用程序执行几乎所有操作。

  • 在里面创建一个文件夹来包含你的 project.site。这可以在 C:\wamp\www\ 目录下或在一个完全独立的文件夹中,如 C:\websites
  • 在您选择的位置内创建一个文件夹 EG C:\websites\project1\www 或在 c:\wamp\www\project1\www
  • 现在打开 localhost wampmanager->localhost 并单击主页上工具部分下的链接 Add a Virtual Host

  • 你会看到一个这样的页面:
    enter image description here
  • 按照每个字段上方的说明填写字段
  • 将为您创建虚拟主机配置。
  • 现在您必须重新启动 DNS 缓存。您可以从 wampmanager 菜单中执行此操作,例如 right click wampmanager->Tools->Restart DNS 。 DNS 缓存将重新启动,然后 Apache 也将停止并重新启动。当 wampmanager 图标再次变为绿色时,一切就完成了。
  • 现在您必须创建一个简单的 index.php 文件或将您的站点安装到您在上面创建的文件夹中。
  • 假设您的 VH 被称为 project.dev 您应该在 WAMPServer 主页的 您的虚拟主机 部分下看到该名称。
  • 您可以从此菜单启动站点,或者只使用地址栏中的新域名 EG project1.dev 并且站点应该启动。

  • 旧的 WAMPServer 2.5 机制,或者如果您想手动完成所有操作
    WampServer 2.5 及更高版本的概念发生了变化,这种变化是有充分理由的!
    在 WampServer 中,现在强烈鼓励为您的每个项目创建一个虚拟主机,即使您将它们保存在 \wamp\www\subfolder 结构中。
    Virtual Hosts Documentation
    Virtual Host Examples
    WampServer 主页 ( \wamp\www\index.php) 现在希望您为所有项目创建一个虚拟主机,因此只有这样做才能正常工作。
    历史
    为了让使用 WampServer 的初学者更轻松地学习 PHP Apache 和 MySQL,建议您在 \wamp\www\ 文件夹下创建子文件夹。
    wamp
    |-- www
    |-- Chapter1
    |-- Chapter2
    |-- etc
    然后,这些子文件夹将在 WampServer 主页中名为“您的项目”的菜单下显示为链接,这些链接将包含指向 localhost/subfoldername 的链接。
    仅适用于简单教程
    这让整个初学者的生活变得轻松,并且对于那些跟随教程学习 PHP 编码的人来说是完全可以接受的。
    但是,它从未打算用于开发您以后想要复制到实时托管服务器的真实网站时。
    事实上,如果您确实使用了这种机制,它通常会导致问题,因为实时站点配置与您的开发配置不匹配。
    真实网站开发的问题
    这样做的原因当然是 wamp 的默认 DocumentRoot 设置是 DocumentRoot "c:/wamp/www/"不管你的子文件夹叫什么。
    经常使用 PHP 代码查询结构或您的网站在开发 WampServer 上运行时收到的信息与在实时托管服务器上运行时收到的信息不同,其中 DocumentRoot 配置指向网站顶部的文件夹文件层次结构。
    这种代码存在于许多框架和 CMS 中,例如 WordPress 和 Joomla 等。
    例如
    假设我们有一个名为 project1 的项目保存在 wamp\www\project1 中,并且运行错误为 localhost/project1/index.php这是一些有问题的 PHP 命令会报告的内容:
    $_SERVER['HTTP_HOST'] = localhost
    $_SERVER['SERVER_NAME'] = localhost
    $_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
    现在,如果我们使用虚拟主机定义正确定义了该站点并将其作为 http://project1 运行,则 WAMPServer 开发站点上的结果将与在实时托管环境中收到的结果相匹配。
    $_SERVER['HTTP_HOST'] = project1
    $_SERVER['SERVER_NAME'] = project1
    $_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
    现在,这种差异乍一看似乎微不足道,但是如果您要使用像 WordPress 这样的框架或像 Joomla 这样的 CMS 之一,那么当您将站点移动到实时服务器时,这可能并且确实会导致问题。
    如何在 WampServer 中创建虚拟主机
    实际上,对于任何 wndows Apache 服务器,这应该基本相同,区别仅在于您可以找到 Apache 配置文件的位置。
    在 Apache 中创建您的第一个虚拟主机需要 3 个步骤,如果您已经定义了一个,则只需 2 个步骤。
  • 创建虚拟主机定义
  • 将您的新域名添加到 HOSTS 文件中。
  • 取消注释 httpd.conf 中包含虚拟主机定义文件的行。

  • Step 1 , 创建虚拟主机定义
    编辑 WampServer 所在的名为 httpd-hosts.conf 的文件
    \wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
    (Apache版本号可能不同,动脑继续)
    如果是第一次编辑这个文件,去掉默认的示例代码,没有用。
    我假设我们要为一个名为 project1 的站点创建一个定义,该站点位于
    \wamp\www\project1
    非常重要,首先我们必须确保 localhost 仍然有效,以便这是我们将放在此文件中的第一个 VHOST 定义。
    <VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory "c:/wamp/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require local
    </Directory>
    </VirtualHost>
    现在我们定义我们的项目:当然,当您开始一个新项目时,您会为每个项目都这样做。
    <VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory "c:/wamp/www/project1">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require local
    </Directory>
    </VirtualHost>
    注意:每个虚拟主机都作为它自己的 DocumentRoot 定义。您还可以将许多其他参数添加到虚拟主机定义中,请查看 Apache 文档。
    小边
    虚拟主机在 Apache 中的工作方式:此文件中的第一个定义也将是默认站点,因此如果浏览器中使用的域名与任何实际定义的虚拟托管域不匹配,则使 localhost 成为文件中的第一个域如果黑客尝试仅使用您的 IP 地址,则加载该站点。
    因此,如果我们确保此域的 Apache 安全性 始终设置为
    Require local
    任何来自外部地址的随意入侵都会收到错误信息并且不会进入您的 PC,但是如果您拼错了域,您将看到 WampServer 主页,因为您与 WampServer 位于同一台 PC 上,因此 local
    步骤 2 :
    将您的新域名添加到 HOSTS 文件中。
    现在我们需要将我们在虚拟主机定义中使用的域名添加到 HOSTS 文件中,以便 windows 知道在哪里可以找到它。这类似于创建 DNS A 记录,但它仅在这种情况下在此特定 PC 上可见。
    编辑 C:\windows\system32\drivers\etc\hosts该文件没有扩展名,应该保持这种方式。注意记事本,因为如果您没有更好的编辑器,它可能会尝试添加 .txt 扩展名。
    我建议您下载 Notepad++,它是免费且非常好的编辑器。
    此外,这是一个 protected 文件,因此您必须使用管理员权限对其进行编辑,因此请使用 Run as Administrator 菜单选项启动您的编辑器。
    完成这些编辑后,hosts 文件应如下所示
    127.0.0.1 localhost
    127.0.0.1 project1

    ::1 localhost
    ::1 project1
    请注意,您应该在此处定义 IPV4 环回地址 127.0.0.1 和 IPV6 环回地址 ::1,因为 Apache 现在支持 IPV6,浏览器将使用 IPV4 或 IPV6 或两者。我不知道它是如何决定使用哪个的,但是如果您打开了 IPV6 堆栈,它可以使用任何一种,并且大多数窗口操作系统从 XP SP3 开始都可以使用。
    现在我们必须告诉 windows 刷新其域名缓存,因此再次使用 Run as Administrator 菜单选项再次启动命令窗口,并执行以下操作。
    net stop dnscache
    net start dnscache
    这会强制 Windows 清除其域名缓存并重新加载它,在重新加载时它将重新读取 HOSTS 文件,因此现在它知道域 project1
    步骤 3 :取消注释 httpd.conf 中包含虚拟主机定义文件的行。
    编辑您的 httpd.conf,使用 wampmanager.exe 菜单确保您编辑了正确的文件。
    在 httpd.conf 中找到这一行
    # Virtual hosts
    #Include conf/extra/httpd-vhosts.conf
    只需删除 # 即可取消注释该行。
    要在运行 Apache 时激活此更改,我们现在必须停止并重新启动 Apache 服务。
    wampmanager.exe -> Apache -> Service -> Restart Service
    现在,如果系统托盘中的 WAMP 图标不再变为绿色,则表示您可能在 \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf 文件中做错了。
    如果是这样,这里有一个有用的机制来找出问题所在。它使用 Apache exe (httpd.exe) 的一项功能来检查其配置文件并按文件名和行号报告错误。
    启动命令窗口。
    cd \wamp\bin\apache\apache2.4.9\bin
    httpd -t
    因此,修复错误并再次重新测试,直到获得输出
    Syntax OK
    现在还有一件事。
    wampmanager 菜单系统上实际上有 2 个新菜单项。一个叫做 'My Projects' ,它默认开启。
    还有第二个,名为 'My Virtual Hosts' ,默认情况下未激活。
    “我的项目”将列出\wamp\www 目录的任何子目录,并提供一个链接以在该子目录中启动站点。
    正如我之前所说,它启动“project1”而不是“localhost/project1”,因此要使链接正常工作,我们必须创建一个虚拟主机定义,以使此链接在您的浏览器中实际启动该站点,而没有虚拟主机定义,它可能会启动网站名称作为关键字的网络搜索或仅返回网站未找到条件。
    “我的虚拟主机”菜单项略有不同。它搜索用于定义虚拟主机的文件(我们将在稍后介绍)并为它找到的每个 ServerName 参数创建菜单链接,并为每个参数创建一个菜单项。
    这似乎有点令人困惑,因为一旦我们为\wamp\www 文件夹的子目录创建了虚拟主机定义,一些项目将同时出现在“我的项目”菜单和“我的虚拟主机”菜单上。
    如何打开另一个“我的虚拟主机”菜单?
  • 备份\wamp\wampmanager.tpl 文件,以防万一你弄错了,这是一个非常重要的文件。
  • 编辑\wamp\wampmanager.tpl
  • 找到这个参数 ;WAMPPROJECTSUBMENU ,它在“[Menu.Left]”部分。
  • ;WAMPVHOSTSUBMENU 参数之前或之后添加这个新参数 ;WAMPPROJECTSUBMENU
  • 保存文件。
  • 现在右键单击 wampmanager 图标,然后选择“刷新”。如果这没有添加菜单,请“退出”并重新启动 wampmanager。

  • 大笔记
    只有当您已经定义了一些虚拟主机时,新菜单才会出现!否则,在定义 VHOST 之前,您将看不到任何区别。
    现在如果你把它带到它的逻辑扩展
    现在,您只需更改 VHOST 定义中的 DocumentRoot 参数即可将您的网站代码完全移到 \wamp\ 文件夹结构之外。例如,您可以这样做:
    在 wamp 磁盘或任何其他磁盘上创建一个文件夹(当心网络驱动器,它们有点复杂)
    D:
    MD websites
    CD websites
    MD example.com
    CD example.com
    MD www
    您现在将站点代码复制到或开始在 \websites\example.com\www 文件夹中创建它并像这样定义您的 VHOST:
    <VirtualHost *:80>
    DocumentRoot "d:/websites/example.com/www"
    ServerName example.dev
    ServerAlias www.example.dev
    <Directory "d:/websites/example.com/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    </Directory>

    php_flag display_errors Off
    php_flag log_errors On

    php_value max_upload_size 40M
    php_value max_execution_time 60
    php_value error_log "d:/wamp/logs/example_com_phperror.log"
    </VirtualHost>
    然后将这个新的开发域添加到 HOSTS 文件中:
    127.0.0.1 localhost
    ::1 localhost

    127.0.0.1 project1
    ::1 project1

    127.0.0.1 example.dev
    ::1 example.dev
    注意:使用与您的实时域名相同的 ServerName 或 ServerAlias 不是一个好主意,就像我们使用 example.com 作为 ServerName 一样,这意味着我们无法再从这里访问真正的实时站点PC 因为它会将 example.com 定向到 127.0.0.1,即这台 PC 而不是互联网。
    还:
    请注意,我已允许从 VHOST 定义中的 Internet 访问此站点,此更改仅适用于此站点,不适用于其他站点。对于允许客户端查看您的更改一小时左右而无需将它们复制到实时服务器非常有用。
    这确实意味着我们必须手动编辑此文件以打开和关闭此访问,而不是使用 wampmanager 上的 Put Online/Offline 菜单项。
    此外,我还对 PHP 配置添加了一些修改,同样仅适用于该站点。
    与您维护的所有其他站点不同,在维护具有特定要求的站点时非常有用。
    我想我们可以根据使用的参数假设它在某个地方有一个长时间运行的页面,它写得非常糟糕,并且不会在浏览器上显示错误的情况下运行,而不会使页面变得一团糟。相信我这样的网站存在,人们仍然希望它们维护得不好。但这意味着我们只需为这个特定站点更改这些参数,而不是全局更改 WampServer 上运行的所有虚拟站点。

    关于php - 项目链接在 Wamp 服务器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665064/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com