从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调用停止工作。
答案 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
来自
的更改行997if ($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 ? '&' : '&');
$url .= $mark . $query;
}
替换
//if ($query) {
if ($query && strpos($query, 'catalog_category') === false ) {
$mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&' : '&');
$url .= $mark . $query;
}
OR
if (!$query) {
$mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&' : '&');
$url .= $mark . $query;
}
现在刷新Magento缓存并刷新页面