【发布时间】:2015-12-26 01:04:45
【问题描述】:
很抱歉再次问这个问题。尽管已经对此进行了很多询问和讨论,但我似乎无法为使用 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\ 等等,并且在启用Options Indexes FollowSymLinks 的情况下转到devwork.webdev 时会在浏览器中很好地显示。 Apache 没有显示任何错误,访问日志文件也正常,一切正常。
现在在我的 HTML 中,当我使用 <a href="/" class="navbar-brand">Project 01</a> 时,单击链接确实会链接到 D:\dev\www\,显示我在该文件夹中拥有的所有项目。
相反,我希望链接到项目的根目录,即D:\dev\www\project01\ 或者更确切地说是http://devwork.webdev/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 下的文件夹。
感谢您的帮助。
【问题讨论】:
-
为什么不直接将 DocumentRoot 设置为
D:\dev\www\project01? -
另外,您似乎误解了 VirtualHost。 VirtualHost 适用于在一台机器上模拟多个不同主机的情况。例如。如果您为
project01.devwork.webdev创建一个VirtualHost 设置,将该主机名添加到etc/hosts,并将其DocumentRoot 设置为D:\dev\www\project01,则对http://project01.devwork.webdev/的所有请求都应打开project01(但不是项目列表) -
将尝试您的建议,尽管我没有为每个 VirtualHost/Project 设置子域(然后每次都将它们添加到 HOSTS 文件中)。我将它们全部保存在 VirtualHost DocumentRoot 下的文件夹中,如问题中所述。您会看到我的 DocumentRoot 是
D:\dev\www,每个项目都在WWW的子文件夹中。否则,每次我对项目进行快速测试时,我都必须设置一个 VirtualHost 并编辑 HOSTS 文件。只需在 VirtualHost DocumentRoot 中创建一个文件夹并通过 HTML 中的"/"链接到该文件夹就是我所追求的。 -
当然,您可以将其全部保存在单个主机上并仅访问子文件夹,但这样您就无法满足您不必更改 HTML 的要求:
/可能只意味着一件事您的主机:D:\dev\www或其他。 -
所以如果我想在单个主机上,我将不得不写
index.html而不是/。这仍然是可以接受的和/或好的做法吗?在源代码中有index.html而不是/?尝试编写尽可能简洁的 HTML,并能够快速将其放到实时服务器上,而无需更改所有指向项目文件夹根目录的链接。
标签: html apache .htaccess redirect virtualhost