所以,我创建了一个网站,我在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
答案 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中引用图像)是一个好主意。
现在改变所有这些文件可能看起来很痛苦,但请放心,这样可以节省您以后的负载。我建议类似的东西:
答案 2 :(得分:1)
如果您的图片和脚本位于不变的特定文件夹中。只需将您的链接设为绝对而非相对。
答案 3 :(得分:1)
您可以从/sample-folder/images/
到/images/
创建symbolic link。 How to create a symbolic link in PHP。虽然我个人只是进行查找/替换来更新源代码中的链接。