【问题标题】:Web project development in subfolder子文件夹中的 Web 项目开发
【发布时间】:2013-08-28 12:01:24
【问题描述】:

例如,我正在处理 2 个项目,A 和 B,将来它们都将托管在根目录中。 Atm 我有一个带有默认参数的 apache web 服务器,我想开始工作,所以我创建了文件夹 A 和文件夹 B,我将在其中存储所有需要的文件。

问题是我什么时候会使用类似的东西

<script type="text/javascript"  src="/resources/scripts/javascript.js" ></script>
<link  href="/resources/styles/stylesheet.css" rel="stylesheet" type="text/css" />

这两个项目都将从 apache 根文件夹 (httpdocs) 调用此文件,而不是从 /a/ 和 /b/ 文件夹。

当我使用 PHP 框架时情况变得更糟,所以我不能只使用

<link  href="./resources/styles/stylesheet.css" rel="stylesheet" type="text/css" />

(/resources/ 之前的点)因为路由项目试图像文件夹一样访问控制器并从那里获取资源。

听起来像一个小问题,但我无法弄清楚并为自己解决这个问题,所以每次我需要开发一些东西时,我都会一次又一次地发明解决方法:)

【问题讨论】:

  • 创建一个$baseURL 变量,您可以在项目中对其进行编辑并附加到每个链接的前面(本质上是创建一个绝对 URL)。
  • 我只使用 apache 虚拟主机,所以每个项目子文件夹都是它自己的根文件夹
  • 我想过虚拟主机,但我没有找到如何在没有域名的情况下正确设置它们:)
  • 您可以使用基于域名、IP 地址或端口的虚拟主机,您只需将 project.localhost 添加到您的主机文件中并将其用作域名

标签: php html frameworks path


【解决方案1】:

处理这个问题的一个好方法是使用一个常量来保存你的项目的路径。这样,您只需编辑该常量即可获得正确的路径。

define('BASEDIR', '/a/');
echo '
<script type="text/javascript"  src="'.BASEDIR.'resources/scripts/javascript.js" ></script>
<link href="'.BASEDIR.'resources/styles/stylesheet.css" rel="stylesheet" type="text/css" />';

这会将你的路径变成

<script type="text/javascript"  src="./a/resources/scripts/javascript.js" ></script>
<link href="./a/resources/styles/stylesheet.css" rel="stylesheet" type="text/css" />';

如果您将该常量保存在一个单独的文件中,您可以将它包含在您需要的地方。例如处理 AJAX 请求的 php 文件。

【讨论】:

  • 唯一的说明,basedir必须不带点,或者在你使用框架的情况下,路径将以控制器和方法开头:)
  • @Nerfair 我在你的问题中错过了这一点。编辑了我的答案以反映它。
  • 但是为您的项目中的任何链接编写 basedir 不是太多不必要的工作吗? :)
  • @Nerfair 不要使用快速打开和关闭标签。就这样做吧:&lt;?php echo '&lt;a href="'.ROOT.'/post/'.$aPost['id'].'"&gt;'.$aPost['title'].'&lt;/a&gt;'; ?&gt;
【解决方案2】:

您可以在每个项目文件夹中创建一个 .htaccess 文件(如果您无权访问 httpd.conf)

ScriptAlias /resources/  "/var/www/html/resources/"
<Directory "/var/www/html/resources/">
   #... whatever you want to set here ...
</Directory>

然后就可以继续使用了

script type="text/javascript"  src="/resources/scripts/javascript.js" ></script>
<link  href="/resources/styles/stylesheet.css" rel="stylesheet" type="text/css" />

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多