Magento 2管理员此网页具有重定向循环


26

Magento 2于昨晚发布,我迫不及待地想要工作。我尝试使用所有先决条件进行安装。

前端工作正常,但是当我尝试打开后端时,它说“此网页具有重定向循环”。Magento创建了“ admin_r2sxkn”作为唯一的后端URL。我的管理员URL是http:// localhost / magento2 / admin_r2sxkn

作为解决方案,我尝试删除不起作用的缓存。

PS我在Mac上具有xampp,具有最新版本的PHP和MySql,并根据需要安装了PHP扩展。

任何帮助,将不胜感激。

在此处输入图片说明

Answers:


17

浏览器在诸如localhost之类的顶级域上不支持cookie。请在其他主机名(例如magento.dev)上重新安装Magento。

此外,Magento仅支持Linux。因此最好使用Vagrant进行开发。您可以使用任何现有的preconfiguret流浪者实例来为您完成所有工作


Magento仅支持Linux?
巴尔加夫·纳纳卡瓦


它可以在像macOS这样的类似Linux的操作系统上运行(很多人这样做都是为了进行开发;例如,请参见github.com/weprovide/valet-plus)。但是,它不受官方支持,因此可能会出现意料之外的不兼容性。
Scott Buchanan

22

就我而言,我正在导入一个已经存在的Magento 2数据库。我收到错误的原因是由于数据库中的cookie域。转到数据库并查看表core_config_data。您应该看到一个名为的路径web/cookie/cookie_domain。确保该域与您安装了Magento 2的域匹配。例如:如果您在local.dev/<magento-root> 的条目中安装了Magento 2,则web/cookie/cookie_domain应该为local.dev


这也是我的问题...
Giel Berkers

那就是邮寄的原因
阿米特·贝拉

1
从core_config_data中选择*,其中路径类似于“ web /%”;
大卫

11

切换到https后,使用有效域名在Magento2上发生了重定向循环问题。

选中web/secure/use_in_adminhtmlweb/secure/use_in_frontend设置core_config_data,两者都应设置为1


谢谢elene,您拯救了我们的时光。它为我工作。查询以查看值:select * from core_config_data where path like 'web/%';
Shahzaib Hayat Khan

这正是我所需要的。另外,如果是更方便地在命令行中做到这一点,而不是在数据库中记录的编辑,这是magento config:set web/secure/use_in_adminhtml 1magento config:set web/secure/use_in_frontend 1
科林

9

在本地主机上安装magento2时,请尝试在第3步的商店地址中使用127.0.0.1而不是本地主机。现在你能做的是在core_config_data表中更改以下两行

web/unsecure/base_url to http://127.0.0.1/magento2/
web/secure/base_url to https://127.0.0.1/magento2/

清除缓存并立即检查

编辑:-

如屏幕截图所示,在第3步中的商店地址中尝试安装127.0.0.1时

在此处输入图片说明


我做了相同的更改,magento2 admin现在使用Firefox,但不使用chrome,我也清除了缓存,但没有结果
Dinesh 2016年

5

我的域名格式为local.abc_def.com,并且遇到了此问题。

我将域中的下划线更改为连字符,从而形成了local.abc-def.com域,这为我解决了此问题


4

可以在\ Magento \ Backend \ Controller \ Adminhtml \ Auth \ Login :: execute中进行调试

例如与

    $requestUrl = $this->getRequest()->getUri();
    $backendUrl = $this->getUrl('*');
    // redirect according to rewrite rule
    echo (string)$requestUrl . ' != ' . $backendUrl;
    die();

它死了,URL也不同,这提示了问题。


我遇到的问题几乎与OP相同,但是检查这些var只会引发进一步的问题-这两个URL永远不匹配,因为每次的键都不相同。如果我尝试加载没有密钥的URL(admin/例如),它将通过密钥对URL进行检查,然后将...重定向到具有密钥的另一个URL,然后对具有另一个不同密钥的URL进行检查?
詹姆斯

正确,使用自定义管理URL似乎存在一些错误/配置错误-在env.php中将其重置为“ admin”解决了该问题!
詹姆斯

2

尝试清理var / cache文件夹。它帮助到我。


这帮助了我最后一次尝试..谢谢@karick
Ask Bytes

0

我有一个更好的解决方案来解决上述问题。

打开.htaccess文件

找到线

 #RewriteBase / magento /

根据您的问题,取消注释行为

  RewriteBase / magento2 /  

注意-:保存.htaccess文件清除所有var / cache和浏览器缓存。



0

使用localhost作为一个实际的顶级域名,而不是独立的,你应该能够管理这一点。.dev如本文所述,使用不是一个好主意:https : //iyware.com/dont-use-dev-for-development/

http://magento.localhost/可能比较合适,或者如果您DOMAIN.com稍后将要部署它,则可以稍后DOMAIN.localhost在DOMAIN.com上进行操作,然后可以对Web服务器进行编码以查找主机名,而不管所使用的TLD如何。

例如,如果您在DOMAIN1.com和DOMAIN2.com上有两家商店,请在nginx conf(或您选择的任何Web服务器)中输入规则,DOMAIN1.*以评估DOMAIN1特定代码的代码。Apache,您可能会SetEnvIf Host DOMAIN1\.(localhost|com)$ VAR=val.htaccess文件中使用类似的内容。


0

在某些情况下,删除特定于Magento2安装的cookie并清除其中的Magento缓存文件var/cache将解决此问题。



0

将http切换为https后,需要更新core_config_data表中的以下值。

UPDATE core_config_data SET value = REPLACE(value, '0', '1') WHERE path = 'web/secure/use_in_frontend';

UPDATE core_config_data SET value = REPLACE(value, '0', '1') WHERE path = 'web/secure/use_in_adminhtml';

然后清除缓存并重新加载管理URL。


0

我已经花了8个小时在这个话题上,这是我的结论

1)设置AllowOverride都在apache目录配置中,至少要读取.htaccess文件,在magento文件夹上是使前台&&后台工作的通用解决方案

2)在.htaccess中设置RewriteBase /或如果localhost / magento则设置一个子文件夹

3)确保将https用作管理路径,以防这些请求变得方便(否则根本不会设置admin cookie):

d = magento.yourdomain.localhost ;

mysql -ua -pb -e“ UPDATE magento.core_config_data SET值=' https:// $ d /'WHERE path in('web / secure / base_url')”;

mysql -ua -pb -e“ UPDATE magento.core_config_data SET value = 1 WHERE path in(' web / secure / use_in_adminhtml ')”

php bin / magento缓存:刷新

4)就是这样,我从这篇文章中删除了所有错误的猜测,因为乍一看它们很多。



0

需要注意的另一件事是您的Web服务器引擎(nginx / apache)在SSL端口443上进行侦听,并且您已配置证书。对我来说,这是一个问题,而其他答案中已经提到了一些建议。

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.