使用cd后,Prestashop图像未正确加载

时间:2015-02-01 06:58:00

标签: .htaccess amazon-s3 prestashop prestashop-1.5

我最近尝试将一些图像的HTTP请求卸载到CDN(使用S3)。

我的cdn位于s3.mydomain.com

一旦我添加了媒体服务器,一切看起来都不错(css,javascript)。但是,有一个问题。我的所有产品图片都缺少图片。

我尝试了以下内容:

  • 关闭友好网址 - >然后一切都像一个魅力。 可以显示产品图像(但仅在转动友好URL时) 关闭。
  • 重新生成缩略图 - >仍然会丢失图像。
  • 移动图片 - >仍然会丢失图像。

启用“友好网址”的完整网址为: http://xx.bro.do/2579-product_list_default/langdon-parka-black.jpg(不工作)

关闭“友好网址”后,它会变为: http://xx.bro.do/img/p/2/5/7/9/2579-product_list_default.jpg

所以,某种方式“友情网址”没有被正确地重定向到“不友好的网址”

以下是我的.htaccess的片段

# Images
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]

100%工作的另一个解决方案是更改以下文件的实际代码:

  • product.tpl
  • 产品list.tpl
  • 以及其他缺少产品图片的文件。

这最后的努力,我试图避免仅因为模板将来发生变化,然后有人将不得不重新重做工作。

所以有人知道如何解决这个问题吗?我感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这种方法适合我。

第1步:启用友好网址。没有媒体服务器检查一切正常。确保已启用友好且已禁用媒体服务器

当第1步工作时,您会看到您的产品的网址为 的 http://ec2.aws.XXXXXXXXX.com/1-large_default/faded-short-sleeves-tshirt.jpg

第2步:立即启用媒体服务器。我使用 cloudfront as cdn s3作为存储桶

启用媒体服务器

你会遇到两个场景

1.css和js不会加载甚至图像都不会加载

2.images将加载,但css和js不会加载

修复此问题:goto 高级参数 - > 表现 - > CCC(结合压缩和缓存)

CSS智能缓存 - 如果,请选择

JavaScript智能缓存 - 如果,请选择

重新加载页面后。该网站似乎很好..

但在此阶段您可能会遇到另外2个场景

1.css,js,图片都已正确加载,但产品图片无法加载。

2.一切正常加载,您的网站很好用。没有任何进一步的改变。

如果你反击第一种情况,请按照以下步骤操作。

第1步。打开您的ftp客户端并导航到您的apache文件夹         通常它将驻留在rootofserver / etc / apache /

    in my case it is rootofserver/etc/httpd

在你的情况下,它可能是相同的,也可能是

     rootofserver/etc/apahce/   
     or rootofserver/etc/apahce2/

第2步。一旦你的文件夹内部打开httpd.conf文件,你可以在任何编辑器中使用..

再次在我的情况下

        its httpd.conf  it might be same or it will be
        apaceh2.conf or apache.conf

第3步。一旦你在任何文本编辑器中打开文件
            找到以下这些行, Allowoverride 将其设置为全部,如果没有。(确保'a'是大写)

        DocumentRoot "/var/www/html"

        #
        # Each directory to which Apache has access can be configured with respect
        # to which services and features are allowed and/or disabled in that
        # directory (and its subdirectories). 
        #
        # First, we configure the "default" to be a very restrictive set of 
        # features.  
        #
        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>

接下来找到这些行并将 Allowoverride设置为All(确保'a'为Capital)

        <Directory "/var/www/html">

        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.2/mod/core.html#options
        # for more information.
        #
            Options Indexes FollowSymLinks

        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   Options FileInfo AuthConfig Limit
        #
            AllowOverride All       

完成此文件的编辑后,将其上传回服务器,或者如果可以将其保存在服务器中,请执行此操作。上传回服务器后,请确保再次检查此文件。如果已经编辑了更改。如果没有打开 putty 或任何命令行工具你的使用和设置

 chmod 0666 to the file 

命令是

"sudo chmod 0666 /etc/httpd/httpd.conf" 

复制粘贴并按命令行界面输入。确保文件名服务器中的一样。以及路线

如果即使在所有这些更改后,您的产品图片仍未加载

转到 cdn控制台并将来源设置为您自己的网络服务器。不要使用s3桶。

如果站点域名(开发时)可能

 ec2.userxxxxxxxx.aws.com (if amazon ec2) 

或任何其他服务,如果您使用         提供该名称作为您的cdn的来源。因为这将使您的服务器和作为s3存储桶的cdn之间的文件保持同步         你必须手动更新你的网站的主副本。(有方法实现s3和服务器之间的同步,但我还没有尝试过)

按照以下步骤进行操作,这可能会让您的网站正常运行..这对我来说非常棒,而且该网站现在已经启用了网址和媒体服务器。