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

时间:2015-09-28 17:49:34

标签: html apache .htaccess redirect 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\,依此类推,并在使用{{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下的文件夹。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这似乎最接近:

  1. 为要访问的每个项目添加VirtualHost定义。 (I&#39;米 不确定如何在XAMPP for Windows上执行此操作。)

    例如,project01.devwork.webdev ...

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

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

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

    您应该在D:\dev\www\project01中看到所有网址的应用程序 将基于&#34; /&#34;。

  5. 后台会发生什么:

    当您在浏览器中打开网址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>
相关问题