Magento URLから/index.phpを削除すると404エラーが発生する


26

Magentoバージョンを使用しています。1.7.0.2。

ここに私のウェブサイトへのリンクがあります:http : //dev.blokeundees.com.au/

/index.phpURLからフォルダーを削除する必要があるので、.htaccessファイルとバックエンドも編集し(セキュア、Webサーバーの書き換え)、/index.php適切に削除されました。

ただし、フロントエンドにアクセスすると、インデックスページを除くすべてのページに対して404エラー(ページが見つかりません)が返されます。

なぜこれが起こっているのか分かりません。


@サンダー-mangelはあなたのチェックに説明したようにhtaccess、私が間違って何アイデアを得るために私達にあなたのhtaccessのコンテンツを提供する追加されます
シルヴァン・レイ

1
問題を解決できましたか?
サンダーマンジェル

回答:


27

Magento URLからindex.phpを削除する方法

Magentoはオンラインで販売するための素晴らしいプラットフォームであり、間違いなく最高ですが、SEOとして不満を抱かせてきたことが1つあります。

彼らに利益はありません。

それらはSEOにとっても悪く、サイト構造と一貫性にとっても悪いです。そして、私のようなクリーンなURLフリークにとってはさらに悪いものです。彼らは十分にセクシーではありません。整理しましょう。

2つのステップでSEOに優しいMagentoのURL

幸いなことに、最近クライアントのためにMagentoストアを行っていたときに、少し掘り下げて、この問題に対する非常に簡単な解決策を見つけました。これには、Magentoの管理設定に対するいくつかの変更と、標準のストアURLの書き換えを整理するための単純な.htaccessファイルの追加または変更が含まれます。

以下の簡単な手順を実行すると、MagentoストアでSEOの成功に近づくことができます。SEOが関連性を低下させる言い訳はありません。

1)設定、管理者を変更しましょう

最初に行う必要があるのは、Magento管理パネル(index.php / admin)にログインして、非常に単純な設定を変更することです。これにより、Magentoは、見苦しいデフォルトではなくストア全体でURL書き換えを使用することを知ることができますURL。

ログインして、この設定を変更します。

[システム]> [構成]> [Web]> [検索エンジン最適化]に移動します

Webサーバーの書き換えを使用:はい

それは簡単でしたね。さて、最後のステップです。

2).htaccessファイルを使用してURLを書き換えましょう

最後の手順では、以前に管理設定内で変更した設定を補完するために、Magentoインストールフォルダーに.htaccessファイルを作成します。これにより、実際にURLが書き換えられます。以下の該当する.htaccessバージョンを選択します。

Magentoストアがルート(public_html)にインストールされている場合、これを使用します。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Magentoストアがサブフォルダー(public_html / shop)にインストールされている場合、これを使用します。

RewriteEngine On
RewriteBase /shop/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /shop/index.php [L]

これで完了です。お役に立てば幸いです!

それは間違いなくあなたのSEOが彼または彼女の髪を引き抜くことを止めます。

これを使用したり、問題が発生した場合は、下のコメントでお知らせください!


2
これは、Magentoのバージョン1.9.xでは機能しません。index.phpURLからを削除しますが、結果は左右に404になります。
夏の開発者

10

作業.htaccessファイルがあることを確認してください。オプションで、Magentoバージョンのダウンロードから取得できます。

mod_rewriteサーバーで有効になっているかどうかも確認してください。これはphpinfo();、サーバー上のスクリプトからを読み取ることで実行できます。このStackoverflowの投稿では、その方法を説明しています。


また、[システム]-> [構成]-> [Web]-> [検索エンジンの構成]-> [Webサーバーの書き換えを使用]が有効になっていることを確認する必要があります。
バルバネット

作業および書き込み可能な .htaccessファイル。
ラプター

6

index.phpURLから削除するには、次の手順に従います。

  1. ログインMagento管理者
  2. に行く System -> Configuration -> Web
  3. 検索エンジン最適化 ]タブを使用するWebサーバーの書き換えを選択YES
  4. SecureおよびUnsecureベースURLが「/」で終わることを確認してください。
  5. .htaccess(magentoのルートフォルダーにあります)を編集し、このリンクで指定されているコードを貼り付けます

5

次の点以外は変更する必要はありません。これら2つの設定を行うだけで大丈夫です。[システム]-> [構成]-> [Web]-> [検索エンジン最適化]で、[はい]を選択します。

[システム]-> [構成]-> [Web]-> [セキュア]-> [フロントエンドでセキュアURLを使用]で、[はい]を選択します。httpd.configファイルで引き続き問題が発生する場合は、キャッシュを更新します。AllowOverride NoneをAllowOverride Allに変更すると、すべてがOKになります


私のhttpd.configには、AllowOverride Noneのような行はありません。その後、私はAllowOverrideのすべてを変更する方法
ZUS

3

ほとんどの場合、WAMP / XAMPPで作業するときは、次のものが必要です。

1)rewrite_moduleが有効になっていることを確認する

たとえば、C:\ wampにwamppをインストールすると、C:\ wamp \ bin \ apache \ apache2.4.9 \ confでhttpd.confを見つけ、#記号を削除して有効にすることができます

LoadModule rewrite_module modules/mod_rewrite.so

2)RewriteBaseを有効にする

たとえば、magento v1.9をC:\ wamp \ www \ magentoにインストールする場合、magentoルートフォルダーのデフォルトの.htaccessを編集して、

RewriteBase /magento/

また、#記号を削除して、デフォルトの書き換えルールを有効にする必要があります

RewriteRule .* index.php [L]

3)[システム]-> [構成]-> [Web]-> [検索エンジン最適化]で、[はい]を選択します。

[システム]-> [構成]-> [Web]-> [セキュア]-> [フロントエンドでセキュアURLを使用]で[はい]を選択します。

LAMPサーバーで作業する場合、上記のすべての項目をチェックして、書き換えモジュールが機能するようにする必要があるのと似ていますが、詳細に多くの違いがあるはずです。


3

Admin.Exc。を除くURLからindex.phpを削除する作業ソリューション。index.phpをURLに配置すると、index.phpを含まないURLにリダイレクトされます。このためには、Webサーバーの書き換えを使用する-検索エンジン最適化からはいを設定する必要もあります。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php/admin/
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]

3

まず、システム->設定->ウェブ-> 検索エンジン最適化に進みます

[ Webサーバーの書き換えを使用]ドロップダウンで[ はい]を選択します。

次に、サイトのルートに移動します

.htaccessファイルを開いてから、.htaccessファイルを作成します

ローカルでは、このファイルは隠されているため、隠しファイルを表示する必要があります(ctrl + H)

ルートがpublic_html /にある場合、このコードを.htaccessにコピーします

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

サイトがサブフォルダーpublic_html / yoursiteにある場合、このコードを.htaccessにコピーします

RewriteEngine On
RewriteBase /yousite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yousite/index.php [L]

アップデート後は、あなたのアイデアは、まだ、私に動作しないuが助け私@ PLSの可能性がmagento.stackexchange.com/q/220973/57334
ZUS

2

サーバーでmod_rewriteが有効になっていることを確認してください。私の場合は無効になっています。サーバーで有効にすると、正常に動作します。


mod_rewriteのは、私のサーバーで有効にするかどうどのように私は自分自身を確認することができます
ZUS

2
  1. サイトのルートフォルダに移動すると、.htaccessファイルが見つかります。編集するだけです。テキストエディタで開き、この行を見つけます。

Base / magento /を書き換えます。

Just replace it with

ベースの書き換え/。.htaccessに次のコードを入れます

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

Magentoがサブフォルダー(「ショップ」など)にインストールされている場合は、次のコードを使用する必要があります。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /shop/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /shop/index.php [L] </IfModule>
  1. 次に、管理パネルに移動して、Webサーバーの書き換えを有効にします。[システム]> [構成]> [Web]> [検索エンジン最適化]で見つけることができます。

今すぐ設定「を使用するWebサーバーの書き換え」の下のオプションを「検索エンジンOptiomization」「はい」。

  1. 次に、「セキュア」の下のフロントエンドでセキュアURLを使用」オプションを「はい」に設定します。右上の[ 構成の保存 ]ボタンをクリックします

  2. 次に、[キャッシュ管理]ページ([システム]> [キャッシュ管理])に移動して、キャッシュを更新し、Webリダイレクトも更新します。


2

magentoプロジェクトのルートにある.htaccessファイルの次のテキストを変更する必要がありました。

#RewriteBase /magento/

RewriteBase /magento/

注:magentoをWebサイト名に変更するだけです。


2

次の手順を使用して、内部ページを含むURLからindex.phpをMagentoに削除します。

管理パネルの確認:[Webサーバーの書き換えを使用する]を[Web]> [検索エンジン最適化]で[はい]に設定し、以下の2つの手順に従ってください。

ステップ1:---------------すべてのレイアウトファイル(1列およびその他すべて)の上にこのコードを挿入します--------------

<?php 
$abc = Mage::helper('core/url')->getCurrentUrl();
if(strpos($abc,'index.php/') !== false) {
$pos = strpos($abc,'index.php/');
$p1 = substr($abc,0,$pos);
$p2 = substr($abc,$pos+10,strlen($abc));
$url = $p1.$p2;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
exit();
}
?>

--------------------------------- ENDステップ1 -------------- -------------------------

ステップ2:--------------- 'Rewrite engion ON'の前にこのコードをhtaccessファイルに挿入します--------------

デフォルトドメインのindex.php

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)index.php$ www.abc.com [R=301,L]
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

HTTPからHTTPSへのリダイレクト

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

----------------------------------- ENDステップ2 ------------ -------------------------------------

注:ステップ2では、サイトのURLを変更するだけです。手順1で何もする必要はありません。


1

Apache2 ubuntu 16.04を使用している場合は、サーバーのどこにもhttpd.confファイルが表示されないため、以下のコードを置き換えるよりも/ etc / apache2 / apache2.confのパスに移動する必要があります。

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

以下のコードで:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

この後、サーバーを再起動します。 sudo service apache2 restart


0
  • [システム]> [構成]> [Web]> [検索エンジン最適化]> [Webサーバーの書き換えを使用]に移動して、[はい]を選択します。
  • sudo a2enmodの書き換え
  • サービスapache2の再起動

これら3つは私のために働いた。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.