将 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 下的文件夹。
感谢您的帮助。
这似乎最接近:
为您要访问的每个项目添加 VirtualHost 定义。 (我是
不知道如何在 XAMPP 上为 Windows) 做。
例如,project01.devwork.webdev
...
将此 VirtualHost 的 DocumentRoot 设置为 D:\dev\www\project01
...
将主机名添加到您的 /etc/hosts/
文件。
在浏览器中打开 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>
抱歉又问了这个问题。尽管这个问题已经被询问和讨论了很多,但我似乎无法找到适合使用 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 下的文件夹。
感谢您的帮助。
这似乎最接近:
为您要访问的每个项目添加 VirtualHost 定义。 (我是 不知道如何在 XAMPP 上为 Windows) 做。
例如,
project01.devwork.webdev
...将此 VirtualHost 的 DocumentRoot 设置为
D:\dev\www\project01
...将主机名添加到您的
/etc/hosts/
文件。在浏览器中打开
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>