URLからindex.phpを削除する方法を探しています。私は多くのウェブサイトが言うことをしました。しかし、それでも404エラーが発生します。多言語のウェブサイトを利用していなければ、エラーは出ないと思います。 Joomla 3.3.3を使用しています。すべての例は単一言語サイト用です。しかし、私のサイトには少なくとも2つの言語があります。
私のホームページのアドレスは
http://www.example.com/index.php/en/
「use mod_rewrite」を有効にしてhtaccess.txt
から.htaccess
、 はい、 index.php
が消えます。
http://www.example.com/en/
しかし、今は404エラーが表示されます。
言語フィルタープラグインの「言語コードの削除」オプションも有効にしました。
Configuration.phpの一部
...
public $sef = '1';
public $sef_rewrite = '1';
public $sef_suffix = '0';
public $unicodeslugs = '0';
...
アドレスバーに http://www.example.com と入力すると、ホームページが読み込まれます。しかし、記事を読むためにメニュー項目をクリックすると、404ページが表示されます。
あなたの提案は何ですか?
まず、グローバル設定で、se URL rewritingをYesに設定します。これは、URLからindex.php
を削除するオプションです。
完了したら、htaccessファイルの名前を.htaccess
に変更します。これにより、上記の最初の変更を実行できます。
私の経験では、.htaccess
ファイルは、多言語/単一言語のサイト設定に関係なく機能するはずです。すべてのページで404エラーが発生する最も一般的な理由ですが、ホームページは.htaccess
のエラーです。確認する必要がある2つの行があります。
提案どおりにOptions +FollowSymLinks
をコメント化してみてください(行の先頭に#を追加します):
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
##
## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks
問題を引き起こす可能性のある2行目はRewriteBase /
です
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##
# RewriteBase /
この行のコメントを外してみてください。Joomlaをサブディレクトリにインストールした場合は、そのディレクトリを/
の後に追加します(例:RewriteBase /joomladir
)
最初に、index.phpを削除するための正しい手順を実行しました。sefが機能しないように何か問題があるだけです。これは実際には、sefリンクに変更した直後は完全に正常です。いくつかの理由が考えられます...
Apacheサーバーがないか、mod_rewriteが有効になっておらず、.htaccessは何もしません。あなたはおそらく気づいたでしょうが、完全を期すために含まれています。また、多くのローカルホストWeb開発環境(WAMPserverなど)では、デフォルトでmod_rewriteが無効になっています。
メニューマネージャーでsefデータを再構築する必要があります。再構築をクリックするだけです。なぜ自動的に更新されないのか分かりません。
キャッシュが原因で、メニューモジュールが正しく更新されませんでした。すべてのキャッシュをクリアします。これは、メニューがテンプレートに統合され、テンプレートが広範囲にキャッシュされるため、私が通常実行するものです。また、F5を2回クリックして、ブラウザーにすべてを再ロードさせる必要があります。