Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重定向HTML"/&引用;要访问WWW目录的子文件夹,请单击VirtualHost DocumentRoot_Html_Apache_.htaccess_Redirect_Virtualhost - Fatal编程技术网

重定向HTML"/&引用;要访问WWW目录的子文件夹,请单击VirtualHost DocumentRoot

重定向HTML"/&引用;要访问WWW目录的子文件夹,请单击VirtualHost DocumentRoot,html,apache,.htaccess,redirect,virtualhost,Html,Apache,.htaccess,Redirect,Virtualhost,很抱歉再次问这个问题。尽管这一点已经被问到并讨论了很多次,但对于使用VirtualHost的本地开发环境,我似乎找不到合适的解决方案。我正在使用XAMPP Portable for Windows for dev work,但假设这对于.htaccess文件的任何其他本地服务器都是一样的 例如,VirtualHost的DocumentRoot是D:\dev\www\ 例如,ServerName是devwork.webdev 主机条目是127.0.0.1 devwork.webdev Virtua

很抱歉再次问这个问题。尽管这一点已经被问到并讨论了很多次,但对于使用VirtualHost的本地开发环境,我似乎找不到合适的解决方案。我正在使用XAMPP Portable for Windows for dev work,但假设这对于
.htaccess
文件的任何其他本地服务器都是一样的

例如,VirtualHost的DocumentRoot是
D:\dev\www\

例如,ServerName是
devwork.webdev

主机条目是
127.0.0.1 devwork.webdev

VirtualHost文件的默认DocumentRoot为
DocumentRoot“D:/xampp/htdocs”
。它很好用

每个项目都位于
D:\dev\www\
下的文件夹中,例如
D:\dev\www\project01\
D:\dev\www\project02\
等,当转到
devwork.webdev
时,在启用
选项索引后,会在浏览器中显示良好。Apache没有显示任何错误,访问日志文件也正常,一切正常

现在在我的HTML中,当我使用
时,单击链接确实会将我链接到
D:\dev\www\
,显示该文件夹中的所有项目

相反,我希望链接到项目的根目录,即
D:\dev\www\project01\
http://devwork.webdev/project01/

我怎样才能让它工作呢

我正在寻找一个解决方案,这样我就可以在本地进行开发工作,而无需更改HTML,稍后将数据FTP到实时主机的根目录下,它就会工作

我已经阅读并尝试了以下内容:










最接近我认为我需要的,但我一定是做错了什么,因为我总是到达DocumentRoot,而不是项目保存在DocumentRoot下的文件夹

谢谢您的帮助。

这似乎是最接近的:

  • 为要访问的每个项目添加VirtualHost定义。(我很高兴 不确定如何在XAMPP for Windows上执行此操作)

    例如,
    project01.devwork.webdev

  • 将此虚拟主机的DocumentRoot设置为
    D:\dev\www\project01

  • 将主机名添加到
    /etc/hosts/
    文件中

  • 打开
    http://project01.devwork.webdev/
    在浏览器中

    您应该在
    D:\dev\www\project01
    中看到该应用程序,而所有URL 将基于“/”

  • 背景中发生了什么:

    当您打开URL
    http://project01.devwork.webdev/
    在您的浏览器中,它会(像往常一样)将其转换为IP地址,但在请求的同时,它还会发送带有输入主机名的
    Host
    头:

    GET / HTTP/1.1
    Host: project01.devwork.webdev
    
    根据主机字段,Apache将决定它需要“假装”成为哪个VirtualHost,并提供来自相应目录的文件


    但是,如果需要项目索引,则必须使用完整URL手动创建。

    使用给定逻辑的另一种方法是,只需在
    D:dev\www\projectname
    中为每个项目添加虚拟主机,方法是为其指定自己的域,而不是主机上的子域

    现在编辑httpd-vhosts.conf(使用XAMP,该文件在InstallDir中,然后在apache\conf\extra中)时没有什么不同,但理想情况下,可以将本地HTML复制到实时服务器,而无需更改HTML

    因此,这是从事本地工作的开发人员应该记住的。我当然会的!!谢谢你的帮助和信息

    <VirtualHost *:80>
        DocumentRoot "D:/dev/www/newprojectname"
        ServerName newdomainname.webdev
        ServerAlias www.newdomainname.webdev
    
        ErrorLog "D:/dev/www/log/dev-apache.error.log"
        CustomLog "D:/dev/www/log/dev-apache.access.log" common   
    
        <Directory "D:/dev/www/newprojectname">
    
            AllowOverride All
    
            Options Indexes FollowSymLinks
    
            Require local
            # more detailed local
            # Require ip 192.168.188
            # or the IP from your local network
    
        </Directory>
    </VirtualHost>
    
    
    DocumentRoot“D:/dev/www/newprojectname”
    ServerName newdomainname.webdev
    ServerAlias www.newdomainname.webdev
    ErrorLog“D:/dev/www/log/dev apache.error.log”
    CustomLog“D:/dev/www/log/dev apache.access.log”通用
    允许超越所有
    选项索引跟随符号链接
    要求本地
    #更详细的本地
    #要求ip 192.168.188
    #或者从您的本地网络访问IP
    
    为什么不将DocumentRoot设置为
    D:\dev\www\project01
    ?而且似乎您误解了VirtualHost。VirtualHost适用于在一台计算机上模拟多个不同主机的情况。例如。如果为
    project01.devwork.webdev
    创建VirtualHost设置,将该主机名添加到etc/hosts中,并将其DocumentRoot设置为
    D:\dev\www\project01
    ,则所有请求都将
    http://project01.devwork.webdev/
    应打开project01(而不是项目列表),然后尝试您的建议,虽然我没有为我拥有的每个VirtualHost/项目设置子域(然后每次都将这些子域添加到HOSTS文件)。我将它们都保存在VirtualHost DocumentRoot下的文件夹中,如问题中所述。您可以看到我的DocumentRoot是
    D:\dev\www
    ,每个项目都位于
    www
    的子文件夹中。否则,每次对项目进行快速测试时,我都必须设置VirtualHost并编辑HOSTS文件。只需在VirtualHost DocumentRoot中创建一个文件夹,并通过HTML中的
    “/”
    链接到该文件夹,这就是我所追求的。当然,您可以将其全部保存在单个主机上,只需访问子文件夹,但这样一来,您不必更改HTML的要求就无法实现:
    /
    在您的主机上只能意味着一件事:
    D:\dev\www
    或其他什么。因此,想要在一台主机上运行,我必须编写
    index.HTML
    ,而不是
    //code>。这仍然是可以接受的,还是良好的做法?源代码中有
    index.html
    而不是
    /
    ?尝试编写尽可能简洁的HTML,并能够快速地将其放到实时服务器上,而无需更改指向项目文件夹根目录的所有链接。这一切也可以做到吗