ホームページ以外の Magento URL は index.php がないと機能しません 質問する

ホームページ以外の Magento URL は index.php がないと機能しません 質問する

私の Magento は、Ubuntu Linux の /var/www/magento にインストールされています。この質問はアーカイブ内のいくつかの質問に似ていますが、実際は多少異なります。Ubuntu Linux に Magento をインストールしたときに、Apache mod_rewrite URL 書き換えを有効にしました。

http:// localhost/magento にアクセスすると、サーバーは URL を http:// localhost/magento/ に書き換え、ページを表示します。次に、ナビゲーション バーのリンクの 1 つをクリックします。ナビゲーション バー項目「foo」をクリックします。すると、Magento は次のページに移動します。

http:// ローカルホスト/magento/foo.html

「見つかりません」という Apache ページが表示されます。

URLを------>に変更する必要があります

http://localhost/magento/index.php/foo.html

ページを表示するには。

どうやら、mod_rewrite の動作に何か問題があるようです。

ありがとう、

ジョン・ゴチェ

構成: システム -> 構成 -> (一般 ->) Web:

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

ベース URL: http:// localhost/magento

「ユーザー Web サーバーの書き換え:」を NO に設定すると、メイン ページからのリンクは正常に機能しますが、正しいページを表示する http:// localhost/magento/index.php/foo.html ページが表示されます。ただし、Web サイトは機能しますが、URL が気に入りません。index.php ビットのない http:// localhost/magento/foo.html にしたいと思います。この方が SEO フレンドリーになる可能性もあります。

ありがとう、

ジョン・ゴチェ


更新: Ubuntu が /etc/hosts に設定した人工的な 127.0.1.1 IP アドレスのコメントを解除して、実際の IP をそこに配置してみましたが、うまくいきませんでした。まったく同じ問題がまだ残っています。また、ブラウザ内の URL が、192.168.3.31、avalanche、avalanche.com と入力するたびに、http:// localhost / etc... に書き換えられます。上記の問題は解決しなかったため、まだ解決方法を模索中です。

127.0.0.1       localhost
#127.0.1.1      avalanche

192.168.4.35    avalanche avalanche.com

Apache を再起動すると次のようになります:

# service apache2 restart
 * Restarting web server apache2                                                apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.4.35 for ServerName

元の問題をどのように修正すればよいかわかりません。ローカル サーバーでテストしています。


この解決策を試して、Apache2 を再起動しましたが、うまくいきませんでした。

URL から index.php を削除するにはどうすればいいですか?

配置:

RewriteEngine On
RewriteBase /mymagento/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

動作しません。RewriteBase / を使用しても動作しません。


OK、ついに問題を解決することができました。ファイル /etc/apache2/sites-enabled/000-default には、このファイル内で定義されているすべてのディレクトリに対して次のディレクティブが設定されています。

 AllowOverride None

たとえば、Ubuntu 12.04 LTS Linuxシステムのデフォルトのドキュメントルートである/var/wwwの場合、このファイルには以下が含まれます。

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

私の理解する限り、これはこのディレクトリとそのすべてのサブディレクトリにある .htaccess ファイルが解析されないことを意味します。この問題を解決するには、次のように設定するだけで十分です。

AllowOverride All

つまり、/etc/apache2/apache2.conf (またはそこに含まれる /etc/apache2/httpd.conf) にあるサーバー設定ディレクティブを上書きできるようになります。

AllowOverride がデフォルトで None に設定されている理由の 1 つは、サーバーの速度が低下するためであり、もう 1 つはセキュリティ上の理由です。このディレクティブはタグ内に設定する必要があります。後者は前者を上書きできます。これがデフォルトで設定されていないもう 1 つの理由は、ディレクトリ パス内のファイルがロードされるたびにサイト全体で .htaccess を再帰的に解析する必要があるため、システムの速度が低下する可能性があるためです。そのため、可能であれば .htaccess の内容を /etc/apache2/httpd.conf に配置することをお勧めします。これにより、速度が向上する可能性があります。

だから場所

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            #AllowOverride None
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

/etc/apache2/sites-enabled/000-default 内

そして、service apache2 restartを実行します。

解決策です。

ベストアンサー1

試しましたか:

RewriteBase /magento/

URL が http:// localhost/magento/ であるため、RewriteBase /mymagento/ ではありません。

Apacheの仮想ホストは設定の上書きを許可していますか?

<VirtualHost *:80>
...
<Directory /var/www/magento/>
    AllowOverride All
</Directory>
</VirtualHost>

おすすめ記事