将 HTML "/" 重定向到 WWW 目录的子文件夹,VirtualHost DocumentRoot

Redirect HTML "/" to subfolder of WWW directory, the VirtualHost DocumentRoot

抱歉又问了这个问题。尽管这个问题已经被询问和讨论了很多,但我似乎无法找到适合使用 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\ 等等,并且在使用 devwork.webdev 时在浏览器中很好地显示=20=]启用。 Apache 没有显示任何错误,访问日志文件也正常,一切正常。

现在在我的 HTML 中,当我使用 <a href="/" class="navbar-brand">Project 01</a> 单击 link 时 link 我会 D:\dev\www\ 显示我在其中的所有项目那个文件夹。

相反,我想 linked 到项目的根目录,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/

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 下的文件夹。

感谢您的帮助。

这似乎最接近:

  1. 为您要访问的每个项目添加 VirtualHost 定义。 (我是 不知道如何在 XAMPP 上为 Windows) 做。

    例如,project01.devwork.webdev...

  2. 将此 VirtualHost 的 DocumentRoot 设置为 D:\dev\www\project01...

  3. 将主机名添加到您的 /etc/hosts/ 文件。

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

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

后台发生了什么:

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

GET / HTTP/1.1
Host: project01.devwork.webdev

根据 Host 字段,Apache 将决定它需要 "pretend" 成为哪个 VirtualHost,并从各自的目录中提供文件。

但是,如果您需要项目的索引,则必须手动创建完整的 URLs。

具有给定逻辑的替代方法是为 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>