apache / cpanel / php共享主机上的相对/根路径

时间:2009-12-03 13:54:49

标签: php apache codeigniter

我正在尝试将php / codeigniter项目部署到共享托管环境。 本地我正在运行MAMP,因此我的所有路径都被引用: -

background:transparent url(/img/myimj.jpg) left top no-repeat;

当我部署共享主机时,这些链接不起作用并解决它们我需要添加“../”。仅改变所有这些参考资料将是令人厌倦的。但是codeigniter路径也会受到影响,我想了解如何使用与本地MAMP apache实例相同的映射。

不熟悉apache,我不知道如何解决这个问题。我正在使用已映射到我的用户的root public_html文件夹。是否可以在.htaccess中使用重写规则来执行此操作?

感谢您的时间。

3 个答案:

答案 0 :(得分:0)

您可以使用.htaccess重写规则,只需将所有images / css / whatever指向特定目录。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /path/relative/to/web-root/

    RewriteRule /?([^/]+)\.css css/$1.css
    RewriteRule /?([^/]+)\.(jpe?g|png|gif) images/$1.$2
</IfModule>

这假设您的所有图片都位于名为images的文件夹中,并且所有样式表都位于名为css的文件夹中。

在这种情况下,最好使用绝对路径调用代码/ css中的图像和样式表。这样,图像将被正确缓存。即使服务器将所有图像重定向到同一目录,客户端也不会看到。因此,如果使用来自树的不同位置的两个文件的相对路径调用相同的图像,则客户端会将这些图像视为两个不同的图像而不是正确缓存它

答案 1 :(得分:0)

如果您的“共享”环境意味着您正在共享DOCUMENT_ROOT,那么您必须小心.htaccess文件 - 因为这将是每个人的.htaccess文件。否则,如果您有虚拟主机,那么将图像上传到/ path / to / document / root / img需要什么?

答案 2 :(得分:0)

感谢您对此的意见。

通过网络托管公司,我已经意识到如果你没有指向它的ANAME,虚拟主机的行为会有所不同。在添加一个文件夹时,public_html将被映射为Web根目录。