从上一级文件夹中选择

时间:2011-05-19 17:26:23

标签: php

所以,我创建了一个网站,我在public_html文件夹中有很多页面。这些页面从public_html文件夹的直接子文件夹中加载图像和脚本。

现在我需要将所有这些文件移动到一个文件夹中(让我们将其命名为sample-folder)。

我的问题:有没有办法让“sample-folder”中的页面从“public_html”中的其他文件夹访问图像和脚本,而不必编辑所有页面并添加每个链接前../ images / image.png?

我不知道,有些htacces重写规则?一些php config.ini编辑?

结构:

public_html
     images
     scripts
     sample-folder
         test.php

4 个答案:

答案 0 :(得分:2)

如果他们处于这样的结构中(听起来就是这样):

/ (document root)
    /images
    /scripts
    /sample-folder
        /test.php

然后,您应该可以通过../images/filename.png/images/filename.png访问图片了。引用文档根目录比管理不同级别的目录结构更容易。

答案 1 :(得分:1)

此.htaccess规则应该有效(假设启用了mod_rewrite):

RewriteRule ^images/(.*)$ sample-folder/images/$1

这将获取(不存在的)images目录中的所有文件请求,并在sample-folder/images/中请求该文件。

希望这就是你所追求的。

编辑:我的错误,读错了。只需为您的路径执行此操作,无论.php文件的目录有多深,.php文件都将正确引用图像:

<img src="/images/myimage.jpg" />

您可以使用../relative/path方法,/leading/forward/slash/approach.jpg应始终有效。

编辑:如果您无法更改链接,则可以将此.htaccess文件放在sample-folder中。它会将所有请求从sample-folder内的images路由到根目录中的/images

RewriteEngine on
RewriteRule ^images/(.*)$ /images/$1

确保它进入sample-folder或您选择的任何名称。


请记住,这不是最好的解决方案。如果您现在开始滥用重写规则,您的应用程序将很快变得混乱。通常,我会设置一个常量,变量或编写一个解析URL和/或包含路径的php函数

包括:请参阅set_include_path()

这应该确保您的php包括从同一个地方调用,无论您在目录树中的哪个位置。通常,这将在某种引导程序文件或所有脚本顶部包含的任何文件中设置。

对于图像,javascript等 - 我强烈建议更改所有路径以使用前导斜杠或绝对URL(最好是在常量或函数调用中)。你已经看到为什么为你经常做的简单任务编写函数(比如在HTML中引用图像)是一个好主意。

现在改变所有这些文件可能看起来很痛苦,但请放心,这样可以节省您以后的负载。我建议类似的东西:

  • 在本地下载整个应用程序
  • 进行备份
  • 查找text editor that supports find/replace in files
  • 修复图像,javascript,css等的所有路径,暂时使用前导斜杠
  • 从现在开始考虑使用自己的PHP功能,这将为您节省曾经再次做这样的事情的努力

答案 2 :(得分:1)

如果您的图片和脚本位于不变的特定文件夹中。只需将您的链接设为绝对而非相对。

答案 3 :(得分:1)

您可以从/sample-folder/images//images/创建symbolic linkHow to create a symbolic link in PHP。虽然我个人只是进行查找/替换来更新源代码中的链接。