重定向HTML"/&引用;要访问WWW目录的子文件夹,请单击VirtualHost DocumentRoot
很抱歉再次问这个问题。尽管这一点已经被问到并讨论了很多次,但对于使用VirtualHost的本地开发环境,我似乎找不到合适的解决方案。我正在使用XAMPP Portable for Windows for dev work,但假设这对于重定向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
.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
将基于“/”
背景中发生了什么:
当您打开URLhttp://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,并能够快速地将其放到实时服务器上,而无需更改指向项目文件夹根目录的所有链接。这一切也可以做到吗