我正在尝试将php / codeigniter项目部署到共享托管环境。 本地我正在运行MAMP,因此我的所有路径都被引用: -
background:transparent url(/img/myimj.jpg) left top no-repeat;
当我部署共享主机时,这些链接不起作用并解决它们我需要添加“../”。仅改变所有这些参考资料将是令人厌倦的。但是codeigniter路径也会受到影响,我想了解如何使用与本地MAMP apache实例相同的映射。
不熟悉apache,我不知道如何解决这个问题。我正在使用已映射到我的用户的root public_html文件夹。是否可以在.htaccess中使用重写规则来执行此操作?
感谢您的时间。
答案 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根目录。