0

我将OpenCart v.1.5.6.5_rc用于电子商店,将WordPress v.4.1用于电子商店的博客。

我有点困惑这两者中的哪一个响应博客的 sitemap-misc.xml 的 404 错误,该错误是从 WordPress 插件Google XML Sitemaps生成的(https://wordpress.org/plugins/google-sitemap-发电机/)。
在使用这个插件之前,我使用Yoast 的 WordPress SEOhttps://wordpress.org/plugins/wordpress-seo/)来生成站点地图 xml(用于博客),我认为这导致了 404 错误,但它不是!

我的结构是

-admin  
-blog/sitemap.xml (/blog/sitemap-misc.xml, /blog/sitemap-tax-post_tag.xml, /blog/sitemap-pt-post-2015-01.xml etc)  
-catalog  
-download  
-image  
-system  
-vqmod  
sitemap.xml (OpenCart: Extensions -> Product Feeds) - works fine 

更让我困惑的是 /blog/sitemap.xml 有效,但 /blog/sitemap.xml 的分析

-blog/sitemap.xml  
      sitemap-misc.xml  
      sitemap-tax-post_tag.xml  
      sitemap-pt-post-2015-01.xml  

失败并出现一般 HTTP 错误:未找到 404!

实际上,如果我在浏览器http://www.example.com/blog/sitemap-misc.xml上使用完整路径,OpenCart 会以 404 错误响应。

任何帮助表示赞赏。

谢谢!

4

1 回答 1

0

我的问题不是由OpenCartWordPress (core)引起的。

我使用的W3 Total Cache ( https://wordpress.org/plugins/w3-total-cache/ ) WordPress 插件导致了 404 错误!

我已经检查了选项Performance -> Browser Cache

不要使用 WordPress 处理静态对象的 404 错误。
通过允许 Web 服务器处理静态文件(图像等)的 404(未找到)错误来减少服务器负载。
如果启用 - 对于WordPress 插件即时生成的某些文件,您可能会收到 404 File Not Found 响应。您可以将这些文件 URI 添加到下面的 404 错误异常列表中以避免这种情况。

# BEGIN W3TC Skip 404 error handling by WordPress for static files
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap(_index)?\.xml(\.gz)?|[a-z0-9_\-]+-sitemap([0-9]+)?\.xml(\.gz)?)
    RewriteCond %{REQUEST_FILENAME} \.(css|htc|less|js|js2|js3|js4|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|woff|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
    RewriteRule .* - [L]
</IfModule>
# END W3TC Skip 404 error handling by WordPress for static files

所以,当我取消选中该选项时,我的问题就解决了!

我想我可以
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap(_index)?\.xml(\.gz)?|[a-z0-9_\-]+-sitemap([0-9]+)?\.xml(\.gz)?)
从 /blog/.htaccess 文件中删除这一行以减少服务器负载。

于 2015-01-25T21:05:40.450 回答