错误404-移至新服务器后无法访问后端


Answers:


16

发生此错误的原因是,管理员的store_id和website_id应该设置为0(零)。但是,当您将数据库导入新服务器时,这些值未以某种方式设置为0。

打开PhpMyAdmin并在数据库中运行以下查询:

SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

进行任何更改之前,请备份数据库,另请参阅日志文件以查找确切的问题。您也可以参考链接404 magento管理员错误, 希望这对您有所帮助


1
嗨,我已经做到了,但是没有用。
zekia 2014年

抱歉...
Bhargav Mehta 2014年

该链接建议的解决方案与您提到的相同,并且我还清除了缓存。虽然仍然没有解决
zekia 2014年

4

我自己碰到了几件事可能会导致这种情况

  • 确保.htaccess在根目录中
  • 确保mod_rewrite在新服务器上启用
  • 检查core_config_data表格中的基本网址
  • 确保缓存已关闭或刷新
  • 检查文件所有者和文件权限

2

您需要直接进入服务器并通过SSH / FTP执行此操作

您必须删除以下文件

 app/etc/use_cache.ser

如果之后出现错误,例如

 Notice: Undefined index: 0 in /srv/www/vhosts/javra.com/htdocs/munchad2/app/code/core/Mage/Core/Model/Mysql4/Config.php on line 92

然后转到您的数据库管理。

打开PhpMyAdmin转到数据库单击SQL运行以下SQL查询:_

SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE     customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

当您将数据库从一台服务器移到另一台服务器时,缓存会发生一些奇怪的事情,因此您似乎需要清除它。


嗨,检查此解决方案?
Nikunj Vadariya 2014年

2

尝试此..re导入db备份数据库,将以下行添加到.sql文件的顶部。这将防止SQL在我们需要将其设置为0时自动为其分配ID 1。

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */

如果没有成功,请在管理页面上尝试上述提到的一个Magento 404之后也检查此链接


2

PhpMyAdmin在数据库中打开并运行以下查询

SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

然后从file manager->var -> cache & 删除两个文件夹session


1
与其他建议相反,这是我需要运行的正确过程。该查询可以获取访问权限,但是我仍然必须清除其他2个文件夹。
aknatn

1

只需将它们添加到.htaccess中

<IfModule mod_rewrite.c>

############################################
## Enable rewrites

    Options +FollowSymLinks
    RewriteEngine on

############################################
## You can put here your magento root folder
## path relative to web root

    #RewriteBase /magento/

############################################
## Workaround for HTTP authorization
## in CGI environment

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

############################################
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks

    RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
    RewriteRule .* - [L,R=405]

############################################
## Never rewrite for existing files, directories and links

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

############################################
## Rewrite everything else to index.php

    RewriteRule .* index.php [L]

</IfModule>

1

我们已经移动了几次服务器,每次遇到相同或相似的问题。我们已经捕获了在每台新服务器上运行的所有脚本,并且它可以解决最近两次迁移中的所有问题,您可以试试看!问题通常出在旧网址被卡在或缓存在某处或权限不足的情况下。

rm -rf var/cache
rm -rf var/full_page_cache/
rm -rf media/catalog/product/cache
rm -rf var/session/*
php shell/indexer.php --reindexall
chown -R apache .
systemctl restart mysqld
systemctl restart httpd 

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
find feeds -type f -exec chmod 644 {} \;
chmod 777 var -R
chmod 777 media -R
chcon -R -t httpd_sys_rw_content_t .
chcon -Rv --type=httpd_sys_content_t ..

0

您也可以尝试将index.php添加到网址中,如下所示:

https://website.test/index.php/admin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.