web-dev-qa-db-ja.com

多言語サイトのURLからindex.phpを削除する方法

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ページが表示されます。

あなたの提案は何ですか?

2
zkanoca

まず、グローバル設定で、se URL rewritingYesに設定します。これは、URLからindex.phpを削除するオプションです。

完了したら、htaccessファイルの名前を.htaccessに変更します。これにより、上記の最初の変更を実行できます。

3
Lodder

私の経験では、.htaccessファイルは、多言語/単一言語のサイト設定に関係なく機能するはずです。すべてのページで404エラーが発生する最も一般的な理由ですが、ホームページは.htaccessのエラーです。確認する必要がある2つの行があります。

  1. 提案どおりに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. 問題を引き起こす可能性のある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

2
johanpw

最初に、index.phpを削除するための正しい手順を実行しました。sefが機能しないように何か問題があるだけです。これは実際には、sefリンクに変更した直後は完全に正常です。いくつかの理由が考えられます...

  1. Apacheサーバーがないか、mod_rewriteが有効になっておらず、.htaccessは何もしません。あなたはおそらく気づいたでしょうが、完全を期すために含まれています。また、多くのローカルホストWeb開発環境(WAMPserverなど)では、デフォルトでmod_rewriteが無効になっています。

  2. メニューマネージャーでsefデータを再構築する必要があります。再構築をクリックするだけです。なぜ自動的に更新されないのか分かりません。

  3. キャッシュが原因で、メニューモジュールが正しく更新されませんでした。すべてのキャッシュをクリアします。これは、メニューがテンプレートに統合され、テンプレートが広範囲にキャッシュされるため、私が通常実行するものです。また、F5を2回クリックして、ブラウザーにすべてを再ロードさせる必要があります。

0
Ville Niemi