很抱歉再次提出这个问题。尽管已经提出并讨论了很多,但我似乎无法使用VirtualHost为本地开发环境找到合适的解决方案。我正在使用XAMPP Portable for Windows进行开发工作,但假设这与.htaccess
文件的任何其他本地服务器相同。
VirtualHost的DocumentRoot例如D:\dev\www\
。
ServerName是devwork.webdev
。
HOSTS条目为127.0.0.1 devwork.webdev
。
VirtualHost文件的默认DocumentRoot为DocumentRoot "D:/xampp/htdocs"
。它运作得很好。
每个项目都位于D:\dev\www\
下的文件夹中,例如D:\dev\www\project01\
或D:\dev\www\project02\
,依此类推,并在使用{{1}转到devwork.webdev
时在浏览器中很好地显示已启用。 Apache没有显示任何错误,访问日志文件也没问题,事情正在发挥作用。
现在,当我使用Options Indexes FollowSymLinks
时,在我的HTML中点击该链接会将我链接到<a href="/" class="navbar-brand">Project 01</a>
,显示我在该文件夹中的所有项目。
相反,我希望链接到项目的根目录,即D:\dev\www\
或更确切地说D:\dev\www\project01\
。
我怎样才能让它发挥作用?
我正在寻找一个解决方案,这样我就可以在本地开发工作,而不用更改HTML以后将数据FTP到实时主机的根目录,它就可以工作。
我已阅读并尝试以下内容:
http://coolestguidesontheplanet.com/redirecting-a-web-folder-directory-to-another-in-htaccess/
https://perishablepress.com/redirect-subdirectory-to-root-via-htaccess/ .htaccess How to redirect root URL to subdirectory files, rewrite to clean URL AND not affect subdomains?
http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/
https://stackoverflow.com/a/990405/1010918
How to redirect /directory/index.html and /directory/index.php to /directory/
Redirecting /directory/index.html to /directory/
与
How to remove .html from URL
和
http://forums.modx.com/thread/77211/endless-friendly-url-redirect-from-subdomain-folder-location
最接近我认为我需要的东西,但我必须做错事,因为我总是到达DocumentRoot,而不是将项目保存在DocumentRoot下的文件夹。
感谢您的帮助。
答案 0 :(得分:2)
这似乎最接近:
为要访问的每个项目添加VirtualHost定义。 (I&#39;米 不确定如何在XAMPP for Windows上执行此操作。)
例如,project01.devwork.webdev
...
将此VirtualHost的DocumentRoot设置为D:\dev\www\project01
...
将主机名添加到/etc/hosts/
文件中。
在浏览器中打开http://project01.devwork.webdev/
。
您应该在D:\dev\www\project01
中看到所有网址的应用程序
将基于&#34; /&#34;。
后台会发生什么:
当您在浏览器中打开网址http://project01.devwork.webdev/
时,它会(像往常一样)将其转换为IP地址,但与请求一起,它还会发送带有输入主机名的Host
标头:
GET / HTTP/1.1
Host: project01.devwork.webdev
基于Host字段,Apache将决定它需要哪个VirtualHost&#34;假装&#34;将来,并提供各自的文件。
但是,如果您需要拥有项目的索引,则必须使用完整的URL手动创建它。
答案 1 :(得分:0)
使用给定逻辑的另一种方法是简单地为D:dev\www\projectname
中的每个项目添加一个VirtualHost,方法是在主机上为其提供自己的域而不是子域。
现在编辑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>