約1週間前、私は新しいサイトのテスト環境で作業していました。 「 http://magento.localhost.com/admin 」の結果はルートなし404になるので、1時間放置して戻ってきて、管理ページにアクセスできなくなりました。これにアクセスできるのは1つだけであり、どのような意味でも生きていません。環境をホストするためにUbuntuでVBoxを使用しています。可能な修正という点で、これまでに試してみました…
Core_store、core_store_group、core_website、customer_groupの各テーブルIDが0に設定されていることを確認します(この記事および他の多くの記事で説明されています- http://www.nude-webdesign.com/fix-for-magento-admin-エラー-404-ページ-見つかりません/ )
/app/code/core/Mage/Core/Controller/Varien/Front.phpメソッド_isAdminFrontNameMatchedで遊んでadminPathを表示します(これは「admin」です)
Varフォルダーをクリアし、ブラウザーのキャッシュを空にしました。サイトのキャッシュは無効になっています。
「index.php」をURLに追加しても、結果は404になります。
Magento Admin 404 のとおり、「app/etc/use_cache.ser」というファイルは存在しません。
この問題が発生した当日、私は自分が作成したモジュールにコピーしたいくつかのレイアウトファイルとテーマのメディアクエリ(すべて、この問題が発生し始める前でも元の状態に戻っていた)をいじっていました。
誰かがここで何が間違っているかについて何か提案がありますか?これが発生している可能性のある他の考えられる理由は何ですか?
何もありがとう。
EDIT 1:06 pm 2013/10/10:Standard.phpが探しているコントローラ名を取得するAlan Stormのメソッドに応じて、私はたくさん返されました「欠落」しているコントローラファイル。ただし、これらのファイルを見つけるために1.7.0.2の新しいコピーをダウンロードした後、それらはどちらにも存在しませんでした。これは、Standard.phpでのAlanのvar_dump提案からの私の出力です。
... "/ public_html/app/code/core/Mage/Index/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Paygate/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Paypal/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Widget/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Oauth/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Authorizenet/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Bundle/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Centinel/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Compiler/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Connect/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Downloadable/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/ImportExport/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Api2/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/PageCache/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/XmlConnect/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/Adminhtml/controllers/Controller.php"
... "/ public_html/app/code/community/Phoenix/Moneybookers/controllers/Controller.php"
... "/ public_html/app/code/core/Mage/Captcha/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/CurrencySymbol/controllers/Adminhtml/Controller.php"
... "/ public_html/app/code/core/Mage/CurrencySymbol/controllers/Adminhtml/IndexController.php"
解決済み3:39 pm 2013/10/9:わかりましたが、かなり率直に修正されています。私は、Alan Stormのvar_dump提案の出力を使用して、コアコードプールのどこかにエラーを作成したことを意味しました(これは、私が意図したものではなく、デフォルトのコードをねじ込んでいます)。残念ながら、正確な学習のため、すべてをデフォルトのコアコードプールである1.7.0.2に置き換えました。これは、Alanが元の回答を更新する前に行われました。アラン、ありがとう。
ルートなし404エラーは通常、Magentoがロードするはずのコントローラーファイルを見つけられないことを示します(通常、設定の誤りが原因です)。
これを診断する最も簡単な方法は、_validateControllerClassName
にアクセスすることです
#File: app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
protected function _validateControllerClassName($realModule, $controller)
{
$controllerFileName = $this->getControllerFileName($realModule, $controller);
if (!$this->validateControllerFileName($controllerFileName)) {
return false;
}
$controllerClassName = $this->getControllerClassName($realModule, $controller);
if (!$controllerClassName) {
return false;
}
// include controller file if needed
if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) {
return false;
}
return $controllerClassName;
}
そして、いくつかのロギングまたはvar_dump
sを、戻りfalse
ステートメントの周りにドロップします。これにより、Magentoが探していて見つからないファイルがわかります。通常は、問題を指摘するのに十分です。
if (!$this->validateControllerFileName($controllerFileName)) {
var_dump($controllerFileName);
return false;
}
$controllerClassName = $this->getControllerClassName($realModule, $controller);
if (!$controllerClassName) {
var_dump($controllerClassName);
return false;
}
// include controller file if needed
if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) {
var_dump("Couldn't include: $controllerFileName");
return false;
}
pdate:Magentoが複数の場所でコントローラーファイルを探すのは正常です。adminhtmlコントローラーファイルを含むものとして登録されているすべてのモジュールを確認する必要があります。
ただし、検索されるほとんどすべてのコントローラファイルは/Controller.php
という名前です。デフォルトの/admin
インデックスページの場合、これはIndexController.php
である必要があります。これにより、システムは、名前が空白のコントローラーを探す必要があると思います(/admin
ではなく(admin/index
ではないため、デフォルトのコントローラー値が、使用しているURLであるためです)。
これが発生する理由は無数にあります。多くの場合、コアファイルが変更されたり、モジュールの構成ノードが誤った値に設定されたりします。以下の解決策がうまくいかない場合は、コードベースとクリーンなベースを比較し、すべてのカスタムモジュールを無効にして、問題が解決するまでモジュールをオンに戻すか、ダイビングする必要があります。 Magentoルーティングコードをデバッグして、システムが不満である理由を理解してください。
この動作の一般的な原因の1つは、次の場所でカスタム管理パスに無効な値が設定されている(または値がまったく設定されていない)ことです。
System -> Configuration -> Admin -> Admin Base URL -> Use Custom Admin Path
「カスタム管理パス」の値が空白の場合、または追加の/
が含まれている場合、これがルーティングを妨害している可能性があります。
管理者にアクセスできないため、次のSQLクエリを実行してみてください
select * from core_config_data where path like '%custom_path%';
...
292 default 0 admin/url/use_custom_path 1
293 default 0 admin/url/custom_path admin/
上記と同様の結果が表示される場合、またはadmin/url/custom_path
が空白/存在しないが、admin/url/use_custom_path
がまだ1
である場合は、それが問題です。
これらの構成値(admin/url/use_custom_path
)および(admin/url/use_custom_path
)をcore_config_data
から削除してみてください。
それがあなたのシステムに当てはまらない場合、私の空のコントローラーによる私の最良の推測は何らかの未知の理由のコードです
#File: app/code/core/Mage/Core/Controller/Varien/Router/Admin.php
public function fetchDefault()
{
// set defaults
$d = explode('/', $this->_getDefaultPath());
$this->getFront()->setDefault(array(
'module' => !empty($d[0]) ? $d[0] : '',
'controller' => !empty($d[1]) ? $d[1] : 'index',
'action' => !empty($d[2]) ? $d[2] : 'index'
));
}
controller
キーに空白の値を入力しています。
私の場合、ストアセットがないため、管理者から404が渡されました。次のクエリを実行して解決しました
SET SQL_SAFE_UPDATES=0;
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;
SET SQL_SAFE_UPDATES=1;
以下のエラーがvar/log/system.logに記録されているかどうかを確認できます
ERR(3):回復可能なエラー:Mage_Core_Model_Store :: setWebsite()に渡される引数1は、Mage_Core_Model_Websiteのインスタンスである必要があり、nullが指定され、/ .../app/code/core/Mage/Core/Model/App.phpで呼び出されます634行目、/ .../app/code/core/Mage/Core/Model/Store.phpの395行目で定義
何よりもまず、構成ファイル(app/etc/local.xml)を確認し、frontName
タグの値として「admin」があることを確認してください。例:
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
通常、あなたがしようとすると http://yoursite.com/admin それはあなたに管理領域を与えますそのようなURLを使ってみてください http://yoursite.com/index.php/admin そしてそれが機能する場合は、おそらく書き換えルールを変更するか、提案に従うだけです(以下のリンクを参照)。
カスタム管理URL www.shop.com/customadminroute/とシステム->設定-> Web-> URLオプション->店舗コードをURLに追加:有効にしたショップでこの問題が発生しました
この場合、次のモジュールで修正する必要があります。
https://github.com/romfr/404adminlogin
カルメンブレーメンのブログ投稿に感謝します。
http://neoshops.de/2012/09/07/magento-404-fehlerseite-beim-admin-login/