HTML项目路径混淆

时间:2016-07-29 17:31:07

标签: php html apache .htaccess

我正在我的localhost上编写一个HTML / CSS / JS项目。 项目根目录位于http://localhost/projects/project1/

我想知道是否可以让HTML文件处理我的项目 root作为其'基本URL,以便引用相同的javascript / css文件 并不依赖于HTML文件的路径(除非我相对于 当前目录)。

这是我的项目结构:

  • 项目

    • PROJECT1

      • 的index.html
      • 页面(目录)
      • page1.html
      • page2.html

      • 应用(目录)

      • APP1(目录)

        • 的index.html
        • 的style.css
        • app.js
      • DEPS(目录)

      • 的jquery.js

如您所见,在我的/projects/project1/index.html中引用jquery.js,
我必须写:

<script src="deps/jquery.js"></script>

引用/projects/project1/pages/index1.html内的jquery.js,
我必须写

<script src="../deps/jquery.js"></script>

引用http://localhost/projects/project1/apps/app1/index.html内的jquery.js,
我必须写

<script src="../../jquery.js"></script>

此时我不确定我是否写了../的正确数量并且很容易 导致错误。

更糟糕的是,如果我重新排序我的目录或重命名它们,这意味着我必须处理 再次重写路径,这可能非常令人生畏。

我已经想到了解决这些方法的各种方法,但没有一个方面具有吸引力(尽管选项3已经接近)。

<小时/> 想法/尝试:

  1. 我尝试过使用.htaccess RewriteEngine / RewriteBase,但没有任何效果。
  2. 我可以为每个项目创建一个新服务器,因为NodeJS非常容易实现。  这样,每个服务器都有一个目录作为其&#39;静态路径是&#39; /&#39;。  这种方法的问题在于这种管理  许多服务器在不同的端口上同时出现,这可能令人困惑。
  3. 我可以通过

    在.htaccess中设置绝对路径变量
     SetEnv PROJECT_PATH /projects/project1/
    

    但是这样做意味着每次移动文件夹时都必须打开.htaccess  或重命名并更改PROJECT_PATH。这可能看起来很简单,但如果你  将项目交给其他人,他们不知道.htaccess是如何工作的,  解释如何找到这条路径以及如何改变它是非常痛苦的,  如果.htaccess长于一行,则会出现更多问题。

    理想情况下,我希望这个SetEnv能够自己找出它所在的文件夹,  但我不知道如何做到这一点。这也有一个问题,即路径变得依赖于PHP预处理,这使得移动到没有.htaccess或PHP的其他服务器(如NodeJS(仍然可以调用php,但即便如此它需要处理.htaccess)也很痛苦。 )。

  4. 我想知道是否可以

    1. 使.htaccess文件创建一个包含推导路径的环境变量 这个特殊的.htaccess文件使这个目录中的php文件可以 做相对于$_ENV{PROJECT_ROOT}的路径。这样,如果移动或共享项目,它仍然可以工作而无需修改.htaccess。

    2. 使.htaccess强制包含在所有&#34; /&#34;的相同或更低目录中的HTML文件引用将此目录视为根目录。

    3. 或者,如果还有其他事情可以解决这个问题,我没有想到。

      提前致谢。

2 个答案:

答案 0 :(得分:0)

德米特里,你可以试试这个:

1)在您的文件 httpd.conf 中,在最后添加以下行:

Redirect permanent /deps http://localhost/projects/project1/deps/

2)重启apache服务

3)刷新索引页面(/projects/project1/pages/index1.html)

我使用过这样的东西:

<html>
<head>
<script src="/deps/jquery.min.js"></script>
</head>

</html>

<?php

echo "welcome to index"

?>

答案 1 :(得分:0)

如何访问文档根目录以外的目录?

这解释了如何让用户访问Windows上目录根目录之外的目录。

假设您的目录位于C:/ www / newfolder /,那么您将在httpd.conf文件中创建以下内容。

Dim linqTemp = (From t1 In dsTempResults.Tables(0).AsEnumerable Group Join
                 t2 In _myDtPalletGun.AsEnumerable On t1.Field(Of String)("item_no") Equals t2.Field(Of String)("Item_No")
                        Into dataGroup = Group From row In dataGroup.DefaultIfEmpty Where row IsNot Nothing
                        Select t1).Distinct().Take(Convert.ToInt16(Me.txtNumberToReturn.Text))

现在,当用户访问 www.domain.com/newfolder / 时,他们会看到文档根目录外的文件夹,它在浏览器中显示为文档下方的目录根..

要考虑的一件事是,如果您有虚拟主机,那么别名适用于每个虚拟主机,因此请尝试为您的别名使用不常见的名称。

希望这有帮助