更新为1.7后,无法在Magento中编辑类别

时间:2012-08-04 14:09:04

标签: magento magento-1.7

从Magento 1.6更新到1.7后,我无法再在生产服务器上编辑类别。

似乎是ajax POST URL被破坏了:

虽然ajax调用在本地计算机上正常工作,如:

http://local.my-domain.de/index.php/admin/catalog_category/edit/key/fcc2335e931e8ec4236be7da67156087/id/7/?isAjax=true

他们被弄乱了

http://my-domain.de/index.php/admin/catalog_category/edit/key/1ac1f1e5f75e665a2fd06eca4569d662/?admin%2Fcatalog_category%2Findex%2Fkey%2F1ed297c236a0c9df5530952aaf7e0618%2F=id/7/&isAjax=true

在生产服务器上,导致用于编辑类别的ajax调用停止工作。

4 个答案:

答案 0 :(得分:5)

在从Apache 2.2切换到Nginx 1.4.2之后,我在Magento CE 1.7.0.2上遇到了这个确切的错误。

在您的服务器(Vhost)文件中,根据以下内容更改@handler定义:

location @handler { 
    # rewrite ^(.*) /index.php?$1 last;
    rewrite / /index.php;
}

php添加以下定义(除了您可能拥有的任何其他内容):

location ~ \.php/ { 
    rewrite ^(.*\.php)/ $1 last;
}

这解决了我的问题。完全归功于@isawk:http://www.magentocommerce.com/boards/viewthread/303318/#t421375原始答案。

答案 1 :(得分:3)

由于这似乎与我们的托管环境中的某些奇怪的服务器设置有关,这里是以某种方式修复此问题的解决方法:

复制/app/code/core/Mage/Core/Model/Url.php

/app/code/local/Mage/Core/Model/Url.php

来自

的更改行997
if ($query) {

if ($query && strpos($query, 'catalog_category') === false ) {

答案 2 :(得分:0)

你的.htaccess文件中是否有可能修改URL的重写规则?看起来HTML编码的类别链接正在添加到您的URL中。

答案 3 :(得分:0)

当您更新magento版本并且一切正常并且正如预期的那样但是目录/类别。当您无法在管理面板中编辑/删除类别并在控制台中检查您的ajax请求时。

<强>解决方案: -

复制 /app/code/core/Mage/Core/Model/Url.php

/app/code/local/Mage/Core/Model/Url.php

magento 1.9中的变更行号1016左右另一次搜索&#34; if($ query)&#34;

if ($query) {
    $mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&amp;' : '&');
    $url .= $mark . $query;
}

替换

//if ($query) {
if ($query && strpos($query, 'catalog_category') === false ) {
    $mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&amp;' : '&');
    $url .= $mark . $query;
}

OR

if (!$query) {
        $mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&amp;' : '&');
        $url .= $mark . $query;
    }

现在刷新Magento缓存并刷新页面